如何获得RVA(相对虚地址)的值,从而得到一个程序的入口点
得到RVA相对虚地址
我们用记事本为例:
首先用VS2010的命令行输入:
dumpbin /headers C:\WINDOWS\system32\notepad.exe
找到:OPTIONAL HEADER VALUES 中的entry point
此时739D就是所谓的RVA。
至于dumpbin 的其它参数可以参考:http://msdn.microsoft.com/zh-cn/library/c1h23y6c
获得程序入口点的方法
1,我们需要用C:\Program Files\Debugging Tools for Windows\ntsd.exe 工具。
还是先说一下这个工具怎么用,要结合CMD,如:
下一步就会出现调试信息如:
2,执行一下这2个命令:
0:000> .symfix
0:000> .reload
3,在用u 命令如:
0:000> u 01000000+0x739D
注:01000000 就是上图的第一个地址,0x739D 就是通过刚才的dumpbin得到的RVA。
最后给出一下最终的结果:
WinMainCRTStartup 就是记事本的程序入口点。
作者:
吉桂昕
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。