IPC или связь с удаленной DLL в процессе

Тема в разделе "WASM.ZEN", создана пользователем KVPV, 23 авг 2020.

Метки:
  1. KVPV

    KVPV New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    1
    Есть игра Х, фришная ММОРПГ. Накрытая античитом (поверх vmp) в виде драйвера, устанавливающая callback'и и убирающая доступ к целевому процессу.

    Мне удалось из юзера сделать инжект в игру, в виде длл.

    Я пишу небольшого бота, и мне нужен GUI для управления. И тут я оказался в ступоре....

    1) Есть у меня внедренная длл, но я не совсем понимаю как устроить связь с другим процессом (GUI)... То ли на сокетах инфу передавать, то ли хз.

    2) Может было бы проще создавать окно из DLL? Тут вариант тоже не особо перспективен, так как надо всю форму на WinApi писать, а это долго и нудно...

    Может какие-то ещё варианты будут? Все что ДЛЛ делает, это ставит хуки на определенные функции в процессе... И перехватывает пакеты игры, для выполнения каких-то действий
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну тут видимо можно во-первых проверить все возможные IPC и посмотреть, может какой-то из них не будет блокироваться (от пайпов до wm_copydata и буффера обмена https://docs.microsoft.com/en-us/windows/win32/ipc/interprocess-communications ). Попробовать открыть порт на системе и подключиться к нему из контекста целевого процесса. Если ничего не заработало, то писать свой драйвер, который будет передавать данные и из целевого процесса общаться через этот драйвер.
    --- Сообщение объединено, 23 авг 2020 ---
    Напиши управлялку на дотнете и WinForms/WPF (это проще и быстрее) и загрузи в целевой нативный процесс с помощью https://habr.com/ru/sandbox/30762/ - да и хукер тоже можешь прям в дотнете сделать при желании, чтобы проще было в гуй передавать данные из похуканных функций и обратно.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Какой есчо дотнет, ты в своём уме это же толстый интерпретатор. Он не существует в виде модуля, это среда для интерпретации, куча сис модулей не понятно как работающих.

    KVPV,

    Ты не сформулировал задачу.

    IPC - для этого есть штатный LPC. Не нравится нэйтив, реализуй свой варик - расшаришь память, далее синхрон по выборке - семафоры эвенты сотни синхромеханизмов на любой вкус". Соккетный обмен данными не годится для игры из за тайминга. Должно быть хард отображение области памяти на два процесса, те обмен данными на аппаратном уровне. При этом софтверный синхрон.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Не вижу в этом абсолютно никаких проблем.
     
  5. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Можно создать ObjRef моникер. Через любой механизм передать в GUI приложение (самый простой запись в файл). Потом просто юзать объектные вызовы. Весь маршалинг и синхронизации возьмёт на себя COM. Если реализовывать IDispatch то можно будет подключаться даже из скриптов.
     
  6. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Где там интерпретатор? Возможно, так было лет 15 назад. Давно уже всё в машинный код переводится.
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну он не шарит просто, не стоит придавать этому особого внимания. Ну да, технически там байткод (msil), который компилится в нативный код jit-компилятором. Ну и да, он существует в виде модуля и может быть загружен в любой нативный процесс, в этом он 100 процентов не прав.
     
  8. Talomir

    Talomir Member

    Публикаций:
    0
    Регистрация:
    13 янв 2023
    Сообщения:
    51
    Адрес:
    Slovackia
    Коннект из внедрённой DLL на прослушиваемый ботом сокет, с командами управления в данных обмена. Всё будет работать.