dll 通过区段调用函数

我发现有人调用dll的时候不是用的loadlibrary等一般方法。我用od跟踪,看他是用CreateFile ReadFile
将DLL读入,然后遍历区段,.data .rdata 等 ,然后去调用。 但是我不知道这个的原理,
请大牛告知!有实例最好啦

这种操作实际模拟了系统PE装载器的工作,就是将文件读到内存,然后映射符号表、函数地址,如果有必要还要修改内存权限,然后硬跳转过去执行。

这种是模拟的DLL被loader加载的过程,可能是想绕过别人对DLL加载的检测等。这样不需要LoadLibrary等API也可以加载。

是的,通过PE文件结构,读取文件,模拟Windows PE装载器的dll加载过程,还有重定向。最后找到导出函数的地址

其实就是自己重新实现一个LoadLibrary,这个可以防止别人Hook LoadLibrary这个函数。