C 从x64进程向x86进程注入x86代码
我意识到标题有点复杂,所以让我解释一下我想做什么: 我刚刚完成了一个简单的DLL注入器的编写,这是我正在尝试编写的概念验证。该程序获取当前进程的快照,枚举进程树,并将DLL注入其直接父进程。现在,在理想的条件下,它可以正常工作:32位版本的注入器可以注入32位父进程,64位版本的注入器可以注入64位父进程 不过,我现在要做的是从x64注入器向32位父进程注入一个32位DLL。一旦这个DLL被注入,我希望接着注入一个调用到被注入的DLL导出的函数之一。不过,我不确定这是否真的可行。(我已经编写了一些代码来确定父进程是32位进程还是64位进程,所以这不会成为问题) 现在,我已经找到了一些代码,它们似乎可以完成第一部分。(至少,我认为它是这样做的)通常,在注入对LoadLibraryW的调用之后,我会得到该调用返回的地址,将相对偏移量添加到我想要调用的导出函数中,然后注入对该函数的调用。不过在这种情况下,我无法将32位库加载到我的64位注入器中,因此我无法像通常那样使用来找到函数的相对偏移量。我通过以下步骤解决了这个问题: 由于我无法使用常规方法找到32位DLL的函数偏移量,因此我当前正在将文件读入缓冲区,使用该缓冲区填充结构,并枚举IMAGE_EXPORT_目录以查找所有导出函数的名称和相对偏移量 因此,在这一点上,我有以下几点:C 从x64进程向x86进程注入x86代码,c,winapi,assembly,x86,x86-64,C,Winapi,Assembly,X86,X86 64,我意识到标题有点复杂,所以让我解释一下我想做什么: 我刚刚完成了一个简单的DLL注入器的编写,这是我正在尝试编写的概念验证。该程序获取当前进程的快照,枚举进程树,并将DLL注入其直接父进程。现在,在理想的条件下,它可以正常工作:32位版本的注入器可以注入32位父进程,64位版本的注入器可以注入64位父进程 不过,我现在要做的是从x64注入器向32位父进程注入一个32位DLL。一旦这个DLL被注入,我希望接着注入一个调用到被注入的DLL导出的函数之一。不过,我不确定这是否真的可行。(我已经编写了一
- 加载到32位进程中的32位DLL
- 在32位进程中运行以下代码时等效于funcAddr的值:
HMODULE hInjectedDLL = LoadLibrary("mydll.dll");
DWORD funcAddr = (DWORD)GetProcAddress(hInjectedDLL, "ExportedFunc") - (DWORD)hInjectedDLL;