|
我们可以通过运行Visual Studio中自带的Depends.exe来查看A.EXE的对于DLL的依赖关系:
可以看到A.exe对MSCOREE.DLL有依赖关系,A.exe用到了mscoree.dll中的一个函数,即_CorExeMain。而mscoree.dll本身的导出函数有137个之多。从函数名字可以猜出,这个函数是exe的一个入口点。为了证实这一点,可以用DumpBin看看内容:
可以看到是首地址是0x00de0000,再加上0x23DE的RVA地址,就是程序的入口点。用u命令反汇编看0x00de23de处汇编代码
可以看到这就是一条jmp指令,跳转到0x00de2000处,那这个位置是啥呢?我们接着使用dds命令来看
原来这里就是mscoree.dll里的_CorExeMain函数。意思就是说任何托管的exe程序中的入口点都是一条JMP指令直接跳转到mscoree.dll的_CorExeMain函数。这个_CorExeMain的地址(也就是00de2000所保存的0x5b034e50)则是由OS Loader填入,因为这个位置正是Import Table的位置。
对于一个托管的DLL而言,情况也非常类似,入口点则是_CorDllMain:
以上博文根据网上的文章整理自用。
小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2024-5-2 01:57
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.