下你所需,载你所想!
汇集开发技术源码资料

易语言写的32位dll注入64位进程模块

:14.558KB :1 :2019-11-25 15:58:59

部分简介

.子程序 GetModuleHandleW64, 长整数型, 公开, 仅在64位系统中可用,会SetLastError
.参数 ModuleName, 字节集, , Unicode,需要包括扩展名,不区分大小写
x86应用程序可以直接调用x64下ntdll.dll中的Native API。

①在x64下的进程,不管是32位或者是64位,实际上都映射了两个地址空间,一个是32位,一个是64位。相当于一个进程的两种工作模式,而且这两种工作模式是可以进行切换的;

②Wow64进程中的r12寄存器指向64位的TEB结构(TEB64);
③每个32位进程都会加重ntdll32.dll和ntdll.dll模块。其中ntdll.dll是64位模块,我们可以将进程的32位模式改为64位模式,然后再去操作64位进程。

关于TEB的获得是通过r12-->TEB64--->PEB--->LDR匹配到ntdll.dll来找到ntdll.dll的加载基地址。

③解析PE结构找到目标函数在"x64模式"下的真实地址(GetProcAddr())。

④通过函数地址调用"x64模式"下的目标函数。这里要注意x64函数调用约定的改变,前4个参数通过rcx,rdx,r8,r9来传递,之后通过堆栈传递。X64Call()已经封装好了。

易语言写的32位dll注入64位进程模块

热门推荐

相关文章