答案是:是计算拉伸后在4GB中的地址
ImageBase+161ABD
问题现在161ABD是文件中对齐后的地址,要转换为再内存中对齐的地址,这就要回顾一下前面的拉伸规则了。
现在要计算出dwRVA,就是代码在内存中的地址,这样才能算出在内存中Call需要跳转的地址:
dwRva代码的RVA地址=VirtualOffset代码地址到内存节的偏移 +pSectionHeader->VirtualAddress节的内存RVA地址;
VirtualOffset代码地址到内存节的偏移=foa代码在文件中的地址 - pSectionHeader->PointerToRawData节在文件中的地址 ;
现在有两个地址要计算,一个是E8 一个E9
VirtualOffset代码地址到内存节的偏移= E8地址 00161AB8-0x400=16 16B8
VirtualOffset代码地址到内存节的偏移= E9地址 00161AB8+5-0x400=16 16BD
E8 dwRva代码的RVA地址=1616B8+0x1000=1626B8
E9 dwRva代码的RVA地址=1616BD+0x1000=1626BD
先弹出 对话框