Метод, который вы предлагаете, будет работать нормально.
Кажется, вы ввели dll в целевой процесс и хотите получить адрес функции в этой dll в целевом процессе из процесса, которыйВнедрил dll.
Я предполагаю, что у вас также есть dll, загруженный в процесс, который ввел dll в целевой процесс и что вы хотите создать удаленный поток в целевом процессе и заставить его выполнить целевойфункция в целевом процессе.
Поскольку введенная вами dll может быть загружена не по тому же адресу в целевом процессе, как в процессе инъекции, вы не можете просто использовать адрес, который вы получили бы при вызовеGetProcAddress для функции в процессе внедрения.
HMODULE - это просто базовый адрес DLL (подробности см. в этом ответе ).Таким образом, вы можете взять HMODULE из dll в процессе инъекции и вычесть его из адреса, возвращаемого GetProcAddress в вашей функции.Затем вы можете добавить HMODULE введенной dll в целевом процессе к этому смещению, чтобы получить адрес целевой функции в введенной dll в целевом процессе.Предполагая, что эта функция имеет правильную сигнатуру, передайте ее как функцию потока своему вызову для создания удаленного потока, и теперь вы выполняете целевую функцию в целевом процессе.
Я объясню это более подробно в этот ответ .