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

加载Dll时直接转向内存Dll,兼容性极佳

: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参数即可。

加载Dll时直接转向内存Dll,兼容性极佳

热门推荐

相关文章