:359.698KB : :1 :2023-01-30 13:43:45
本程序不是什么Hook了LoadLibrary、GetProcAddress等简单粗暴地将Dll命令地址强行转向内存。
本程序的Dll加载和重定向部分全部由系统完成,稳定性和兼容性极好(理论上和原生LoadLibrary完全相同)
众所周知,系统Dll加载的一个核心函数是NtMapViewOfSection,这个函数负责将Dll文件映射到内存。
如果我们Hook了NtMapViewOfSection函数,在加载正常Dll时使用我们自己写的方案,将内存中的Dll数据二次映射到内存,替换掉原来的Dll,那么就可以实现Dll的直接内存加载。
重写的MyMapDll原理大致如下:
首先是解析Dll的IMAGE_SECTION_HEADER,计算Dll需要的内存。
分配相应大小的内存。
将Dll的SECTION写到内存中。
Map好Dll后,只需要将新映射好的内存地址和大小反馈会NtMapViewOfSection参数即可。
02-03升级加载内存Dll,兼容性极佳
09-24内存方式加载DLL
12-27内存加载DLL文件不释放出来
11-30远程注入汇编内存加载DLL修改版源码及说