|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
||||||
Вызов процедуры из инжектированной DLL18.03.2016, 15:05. Показов 4551. Ответов 39
Метки нет (Все метки)
Приветствую.
Имеется игра с именем MP.exe Имеется DLL, написанная на Си. Известно имя процедуры внутри DLL (Test) Имеется рабочий код инжектора, который внедряет эту длл в игру. Вопрос: как вызвать процедуру из внедренной DLL, используя код Delphi? Код для инжектирования написан не мной. Это визуальная форма, предлагающая выбрать длл а также процесс для внедрения. Вот ее полный код: Кликните здесь для просмотра всего текста
0
|
||||||
| 18.03.2016, 15:05 | |
|
Ответы с готовыми решениями:
39
Вызов процедуры из dll Вызов процедуры из DLL Вызов процедуры c парметрами из dll |
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 18.03.2016, 15:12 | |
|
А собссно из какого процесса и зачем понадобилось вызывать эту процедуру ?
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 15:30 [ТС] | |
|
dll внедряется в процесс mp.exe, оттуда же и нужно вызвать процедуру. Сама процедура выполняет отправку сообщения, написанного в игре в чат строку. (Внешний чат)
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 18.03.2016, 15:43 | |
|
что-то логика какая-то через ж выстроенная)
либа успешно грузанулась в АП "жертвы", после чего наверняка способна отслеживать изменения в "чат строке" и иных контролах "жертвы" (иначе нафих ее нужно было туда внедрять ?) как только она обнаружила интересующие изменения, она сама связывается с приложением-инициатором внедрения и сообщает ему что, мол, в таком-то контроле "жертвы" произошли такие-то конкретно изменения (например, геймер написал че-то там в чат-строке и жмакнул "Отправить"), после чего приложение-инициатор вольно самостоятельно отправить это самое "че-то там" хоть во внешний чат хоть на Луну и нафих для этого изголяться вызывать ф-ции из либы-шпиона - совершенно не понятно)
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 15:57 [ТС] | |
|
Не знаю, зачем вам такие подробности, мне всего-лишь нужно вызвать процедуру.
Основная программа извне открывает чат строку (закрывая при этом консоль и прочее) и вставляет текст из мемо, далее используется длл, закрывается чат строка, убирается визуальная часть текста после отправки (иначе залипнет на экране). Для отправки сообщения в игре используется кнопка Enter. Почему нужно использовать длл? Потому что игра ни в какую не хочет использовать сообщения о нажатии клавиши полученные извне (send, post и прочие), а "напечатанный" интер отправляется как символ.
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 18.03.2016, 16:05 | |
|
Sevirman, ну тогда CreateRemoteThread и в шелл-коде GetModuleHandle/GetProcAddress.
Добавлено через 1 минуту или вызывать функцию напрямую (CreateRemoteThread, если у функции нет параметров) Добавлено через 1 минуту Sevirman, а код dll доступен?
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 18.03.2016, 16:06 | ||
|
Чтобы вызвать ее косвенно в чужом, в простейшем случае придется городить тот же самый огород с CreateRemoteThread, что используется и при внедрении либы ? Код внедрения писал не ты и потому не понимаешь (или не желаешь понять) в принципе как и почему это работает, поэтому какой смысл рассказывать тебе про CreateRemoteThread, если тот же он самый как раз и используется для вызова нужной ф-ции в нужной либе в чужом процессе ?)
0
|
||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 16:06 [ТС] | |
|
Буду благодарен, если предоставите модификацию приведенного в начале кода, мне будет проще разобраться, так как нет опыта по этой части.
Да, код длл доступен.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 18.03.2016, 16:16 | |
|
ты в имеющемся сначала разберись)
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 18.03.2016, 16:18 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 16:20 [ТС] | |
|
mss, не строй из себя всезнайку, со всем, что мне нужно я уже разобрался, а что не знаю спросил. Либо отвечай нормально, либо вовсе не отвечай.
jupman, эмуляция нажатия клавиш точно не подойдет.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 18.03.2016, 16:28 | |
|
Sevirman,
Я дал тебе вполне конкретную рекомендацию - разобраться в работе ф-ции CreateRemoteThread по уже имеющемуся у тебя исходнику. Она делат именно то что ты возжелал - вызывает указанную функцию из указанной библиотеки. А ты надул губки аки барышня кисейная) Чего еще надо-то ?)
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 16:52 [ТС] | |
|
mss, губонадувательством не занимаюсь.
Мне желателен пример использования CreateRemoteThread для вызова функции из длл
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|||||
| 18.03.2016, 16:59 | |||||
|
Добавлено через 1 минуту
0
|
|||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 18.03.2016, 17:00 | ||
|
Конкретно в ф-ции InjectIDMetod средствами конкретно CreateRemoteThread вызывается конкретно ф-ция LoadLibraryA из конкретно библиотеки kernel32.dll, находящейся в адресноим пространстве процесса-жертвы !
0
|
||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 18.03.2016, 17:12 | |
|
Sevirman, в вашей этой процедуре (Test) сколько параметров?
Добавлено через 11 минут Sevirman, тфу ты, что-то я гоню сегодня. Это у kernel32.dll база фиксированная в процессах. Потому можно сразу вычислить lpStartAddress для потока. У вас так не получится сделать.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 18.03.2016, 17:42 | |
|
Фиолетово - либа уже а ап жертвы
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||
| 18.03.2016, 17:51 | ||
|
1) узнаете базу по которой загрузилась либа (CreateToolhelp32Snapshot/Module32First/Module32Next) 2) грузите либу к себе тоже, но без инициализации (LoadLibraryEx(DONT_RESOLVE_DLL_REFERENC ES)), находите адрес функции (GetProcAddress) 3) вычитаете из адреса функции базу либы (загруженную в свой процесс) и прибавляете базу (полученную из чужого процесса п.1) 4) это и будет адрес функции для CreateRemoteThread Как то так.
0
|
||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 18.03.2016, 18:45 [ТС] | |
|
Блин, ничего не выходит
. Пожалуйста приведите готовый код, к примеру для button1, чтобы вызвать функцию. Мне так намного проще будет разобраться.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||||
| 18.03.2016, 20:27 | ||||
|
Ну или хотя бы так) Добавлено через 15 минут главное подготовить блок памяти под них и записать их туда (VirtualAlloxEx + WriteProcessMemory) параметром в CreateRemoteThread передается адрес блока, а уж нить разбирает его на отдельные параметры и готовит вызов
0
|
||||
| 18.03.2016, 20:27 | |
|
Помогаю со студенческими работами здесь
20
Вызов функции или процедуры главного приложения с dll C#
Inject dll, а также вызов функции из этой же dll Вызов процедуры из другой процедуры с параметрами Вызов пользовательской процедуры из процедуры по указателю Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|