Передача аргументов в точку входа в Dll - PullRequest
0 голосов
/ 07 марта 2020

Я хочу передать структуру основным библиотекам моего dll в моем инжекторе, поэтому в основном я хочу сделать это:

struct structure{
    char text[1024];
};
int DllMain(structure arg1,uintptr_t arg2,uintptr_t arg3);

И все же я хочу знать, как я могу заставить свой инжектор передавать структуру. Я вручную картирую dll кстати.

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Нельзя передать пользовательские параметры DllMain(). Подпись исправлена, и, кроме того, вы все равно не звоните DllMain() напрямую, а только ОС.

Вы можете либо:

  • иметь DLL экспортирует отдельную функцию, которую вы вызываете после внедрения DLL в процесс.

  • хранит данные в блоке общей памяти, к которому DLL может получить доступ после внедрения.

  • установить межпроцессный канал связи между DLL и инжектором, например, с именованным каналом или сокетом.

0 голосов
/ 18 апреля 2020

Добавьте в свою библиотеку ресурс, соответствующий размеру вашей структуры или большему фиксированному размеру, содержимое не имеет значения, вы перезапишете его позже, это в основном заглушка.

Загрузка DLL в локальную памяти в вашем инжекторе, прежде чем вы вручную отобразите его

Перезапишите этот ресурс своими данными.

Вручную Сопоставьте свою DLL с целевым процессом

Получите доступ к ресурсу, чтобы получить данные, которые вы необходимо

...