首页
社区
课程
招聘
利用PE结构输出调试信息
发表于: 2006-3-7 13:00 3704

利用PE结构输出调试信息

2006-3-7 13:00
3704
   『软件调试论坛』却很少有软件调试方面的文章,我来写一个窍门,希望对大家有所帮助。
    我们在做vc编程调试时经常遇到需要显示变量的内容之类的问题,在dos模式下我们简单使用printf(...)就行了,在windows我们如何显示变量内容呢?大家肯定有许多方法如:调试时设置断点,用MessagBox什么的。我在开始使用vc时,也经常采用这样的方法来调试,但遇到一些不能用断点调试的程序时,比如某些绘图的程序里需要在ondraw里计算,就没办法了,把变量写到文件里吧?太麻烦了,还是看看仔细检查源代码吧!另外MessageBox只能显示字符型,数字显示还有进行转换。哪有什么办法能在WINDOWS GUI程序里使用printf呢?
    最近在研究PE结构时发现,只要将windows GUI程序的可选头(Optional Header)的Subsystem属性由原来的数值02(IMAGE_SUBSYSTEM_WINDOWS_GUI)修改为03(IMAGE_SUBSYSTEM_WINDOWS_CUI)就可以在运行窗体外,再显示一个标准windows控制台界面,如果我们在vc程序里加入printf这样的语句,调试内容就可以直接显示在标准的控制台界面里,是不是很方便啊!

    关于Subsystem的快速定位,从运行文件开始,查找PE所在的位置,再向下移动0x5C就是所要找的Subsystem,那里原来的数值应该是0x02。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
OK!学到一手了,修改后,VC窗口程序后出现个控制台界面,pintf函数输出的内容都在控制台那里,很好用的说
2006-3-7 13:34
0
游客
登录 | 注册 方可回帖
返回
//