Внедрение кода DLL с удаленным потоком: где хранить имя файла / расположение DLL в адресном пространстве целевого процесса?

на этот вопрос может быть нет (полезного) ответа, но что бы то ни было. Я хочу внедрить код в приложение с помощью инъекции кода DLL. План такой:

  1. Найдите адрес функции LoadLibrary в целевом процессе.

  2. Напишите строку с именем / путем к файлу библиотеки DLL, которую я хочу загрузить, используя WriteProcessMemory () где-нибудь в адресном пространстве целевого процесса.

  3. Запустите удаленный поток с помощью CreateRemoteThread () с адресом LoadLibrary () в качестве точки входа и указателем на строку, содержащую имя / путь к файлу библиотеки DLL, которая будет загружена в качестве аргумента для функции LoadLibrary ().

Проблема в том, что нет. 2. Где в адресном пространстве целевого процесса я могу сохранить строку (не повредив что-либо)?

Если этот вопрос задавался раньше, не стесняйтесь указать мне на него.

Большое спасибо за любую помощь.


person lulle    schedule 26.06.2018    source источник


Ответы (1)


VirtualAllocEx позволяет указать процесс, в котором память выделяется. Вы могли бы использовать это для выделения блока памяти. Обратите внимание, что вы не можете писать напрямую на возвращенный адрес - это другой процесс. Вы должны написать имя DLL через WriteProcessMemory.

Если вы намеревались разместить свой код в DllMain, вам не следует этого делать. Windows удерживает внутреннюю блокировку при выполнении DllMain, и это увеличивает риск тупиковой ситуации, в зависимости от того, что вы собираетесь делать в своем коде ловушки. Вы можете получить адрес функции в своей DLL и снова использовать CreateRemoteThread, чтобы запустить ее в отдельном потоке после загрузки DLL.

Вместо того, чтобы реализовывать все это самостоятельно, я бы порекомендовал вам использовать уже написанную библиотеку, например EasyHook. , который поддерживает как управляемую, так и неуправляемую инъекцию.

person Dark Falcon    schedule 26.06.2018
comment
Большое спасибо за быстрый ответ, VirtualAllocEx - это то, что мне нужно. - person lulle; 26.06.2018