Есть игра Х, фришная ММОРПГ. Накрытая античитом (поверх vmp) в виде драйвера, устанавливающая callback'и и убирающая доступ к целевому процессу. Мне удалось из юзера сделать инжект в игру, в виде длл. Я пишу небольшого бота, и мне нужен GUI для управления. И тут я оказался в ступоре.... 1) Есть у меня внедренная длл, но я не совсем понимаю как устроить связь с другим процессом (GUI)... То ли на сокетах инфу передавать, то ли хз. 2) Может было бы проще создавать окно из DLL? Тут вариант тоже не особо перспективен, так как надо всю форму на WinApi писать, а это долго и нудно... Может какие-то ещё варианты будут? Все что ДЛЛ делает, это ставит хуки на определенные функции в процессе... И перехватывает пакеты игры, для выполнения каких-то действий
Ну тут видимо можно во-первых проверить все возможные IPC и посмотреть, может какой-то из них не будет блокироваться (от пайпов до wm_copydata и буффера обмена https://docs.microsoft.com/en-us/windows/win32/ipc/interprocess-communications ). Попробовать открыть порт на системе и подключиться к нему из контекста целевого процесса. Если ничего не заработало, то писать свой драйвер, который будет передавать данные и из целевого процесса общаться через этот драйвер. --- Сообщение объединено, 23 авг 2020 --- Напиши управлялку на дотнете и WinForms/WPF (это проще и быстрее) и загрузи в целевой нативный процесс с помощью https://habr.com/ru/sandbox/30762/ - да и хукер тоже можешь прям в дотнете сделать при желании, чтобы проще было в гуй передавать данные из похуканных функций и обратно.
Rel, Какой есчо дотнет, ты в своём уме это же толстый интерпретатор. Он не существует в виде модуля, это среда для интерпретации, куча сис модулей не понятно как работающих. KVPV, Ты не сформулировал задачу. IPC - для этого есть штатный LPC. Не нравится нэйтив, реализуй свой варик - расшаришь память, далее синхрон по выборке - семафоры эвенты сотни синхромеханизмов на любой вкус". Соккетный обмен данными не годится для игры из за тайминга. Должно быть хард отображение области памяти на два процесса, те обмен данными на аппаратном уровне. При этом софтверный синхрон.
Можно создать ObjRef моникер. Через любой механизм передать в GUI приложение (самый простой запись в файл). Потом просто юзать объектные вызовы. Весь маршалинг и синхронизации возьмёт на себя COM. Если реализовывать IDispatch то можно будет подключаться даже из скриптов.
Ну он не шарит просто, не стоит придавать этому особого внимания. Ну да, технически там байткод (msil), который компилится в нативный код jit-компилятором. Ну и да, он существует в виде модуля и может быть загружен в любой нативный процесс, в этом он 100 процентов не прав.
Коннект из внедрённой DLL на прослушиваемый ботом сокет, с командами управления в данных обмена. Всё будет работать.