C++: инъекция Dll. Почему CreateRemoteThread() не работает в блокноте?
Я довольно новичок в внедрении DLL, делаю это из любопытства и потому, что хочу создать оверлей в игре, не изменяя его исходный код.
Но сейчас я застрял с базовой инъекцией DLL: той, что использует CreateRemoteThread().
Я следовал этому уроку (по-французски, будьте осторожны): http://xevia.webege.com/old/atoray/2010/06180.php
Что я сделал:
- Инъекция отлично работает на основной программе Target.exe (см. Ссылку Xevia)
- Я могу видеть DLL, загруженную процессом с EnumProcessModules()
- После инъекции в Target.exe я вижу, что мой "Hook.dll" был добавлен.
- [править] Проверил exe-версию: и блокнот, и мой инжектор 32-битные
Но когда я внедряю dll в другие процессы, кажется, что это не работает, даже если CreateRemoteThread () не возвращает NULL.
Итак, я проверил много постов, в том числе и этот: Как предотвратить внедрение DLL
И это: C++ - CreateRemoteThread DLL Injection [Windows 7] (пробовал абсолютный путь, но безуспешно)
И многие другие, не имея возможности указать, что было не так. Поэтому я призываю SO-богов.
1) Может ли это быть проблема прав доступа?
2) Это может быть мой метод инъекций, слишком классический? Какой я должен попробовать?
3) [Тема вопроса] Почему моя DLL не вводится в Блокнот с CreateRemoteThread?
Спасибо за ваше время.
[открыть для любой грамматики / редактирования формулировки]
1 ответ
Оно работает!
Что мне нужно было изменить:
- Сборка в x86, чтобы соответствовать целевому приложению
- Используйте абсолютный путь
Я сделал оба, но забыл изменить свой абсолютный путь при переключении между x86/x64...
Спасибо Адриану Роману, который поставил меня на правильный путь.