如何获得RVA(相对虚地址)的值,从而得到一个程序的入口点

得到RVA相对虚地址

我们用记事本为例:

首先用VS2010的命令行输入:

dumpbin /headers  C:\WINDOWS\system32\notepad.exe

如:image

找到:OPTIONAL HEADER VALUES 中的entry point

image

此时739D就是所谓的RVA。

至于dumpbin  的其它参数可以参考:http://msdn.microsoft.com/zh-cn/library/c1h23y6c

 

获得程序入口点的方法

1,我们需要用C:\Program Files\Debugging Tools for Windows\ntsd.exe 工具。

还是先说一下这个工具怎么用,要结合CMD,如:

image

下一步就会出现调试信息如:

image

2,执行一下这2个命令:

0:000> .symfix
0:000> .reload

3,在用u 命令如:

0:000> u 01000000+0x739D

注:01000000 就是上图的第一个地址,0x739D 就是通过刚才的dumpbin得到的RVA。

最后给出一下最终的结果:

image

WinMainCRTStartup 就是记事本的程序入口点。

posted @ 2012-08-10 13:35  吉桂昕  阅读(750)  评论(0编辑  收藏  举报