afaik нет способа внедрить 32-битные dll в 64-битные процессы и наоборот (по крайней мере, это невозможно с моим c ++ написанным инжектором / dll). Однако при использовании инжектора Autoit из http://pastebin.com/AGWw2kT8 можно ввести 32-битные библиотеки в 64-битные процессы. Эта библиотека Autoit использует тот же способ инъекции, что и мой инжектор c ++ (CreateRemoteThread). Может кто-нибудь объяснить это поведение?
Я нашел причину, почему инъекция прошла успешно. В скрипте теста впрыска Autoit я использую @SystemDir & "\calc.exe"
в качестве пути для целевого приложения. Тем не менее, на 64-битной установке Windows @SystemDir
макрос указывает на C: \ Windows \ SysWOW64 вместо C: \ Windows \ System32 — поэтому сценарий запустил 32-битную версию calc.exe, в которой внедрение прошло успешно.
CreateRemoteThread 32->64
не сработает!
CreateRemoteThread 64->32
буду работать!
Больше информации на эту тему Вот
Это не может работать (вы не можете смешивать 32- и 64-битный код в одном процессе). Поэтому это не так. Конечно, может не дать понять, что это не сработало.