标 题: 【原创】科锐第三阶段项目之一,调试器的设计(1、15、31、38、40、47、50楼更新)(源码.文档.使用说明,全都在一楼更新了)
作 者: EvilKnight
时 间: 2010-04-27,23:58:37
链 接: http://bbs.pediy.com/showthread.php?t=111875
注,附件已经更新,调试器修复了一些小bug!
第一章节至第六章节都在附件中的文档中!
本项目是在科锐学习第三阶段项目之一,因鄙人没有天马行空的创意,亦没有巧夺天工的技术,加之时间、技术等问题,本调试器各方面设计存在很多不足,或多或少还存在一些bug,所以希望大家多多指导。
如果大家对本程序有什么意义或者建议的话,欢迎大家和我联系,本人不胜感激。
调试器的一些开发文档将在后期中不停放出。
同时在这里感谢钱林松老师、方志强老师、赵海旭老师和岳磊老师,多谢他们在这近一年的时间里对我们班学员的教育和帮助。
在此对他们表示由衷的感谢。
同时也要衷心感谢一起战斗的兄弟们:孙年忠、傅强、薛亮亮、许晓明、易新、任晓晖、柳德春、吴彬、彭燕青、吴鸣鹏等各位科锐的同学,多谢他们为我的设计提供思路,还有帮我测试程序,哈哈。
附件包含调试器的可执行程序:DebugerVC.exe
Debugger使用帮助.doc 是调试器的使用帮助
测试程序 目录下面是一些测试用例,里面附带一个readme.txt说明
科锐五期班学员 黄奇
e-mail: microq@vip.qq.com
前言
依然记得刚来科锐学习的时候,钱林松老师说:” 程序不是写出来的,而是调出来的!”。
回忆学生时代写程序的时候,遇到bug往往很无奈,常常是把程序从头到尾看一遍,或者是在一些关键的地方,觉得会出错的地方,printf一下,来判断是不是这里出错了。曾经还觉得这个方法不错,沾沾自喜呢。
后来工作后,或多或少要调一些程序,但是总觉得不得要领。
所以我觉得无论是软件逆向工程的研究者还是开发人员,都有必要自己实现一个调试器,当你的调试器完成的时候,或许你对软件调试会有一种顿悟的感觉。
而且可以根据自己的需要,写一个适合自己的调试器,对于逆向或者调试程序来说,都会得心应手,而且还可以过针对某些调试器的反调试哦!
因鄙人没有天马行空的创意,亦没有巧夺天工的技术!所以调试器设计得也有很多不足,但也略有心得,故拿出来,与大家分享之,希望能帮助到有需要的人。
由于本人能力有限,文中必然有错漏之处,恳请读者不吝赐教。
程序运行效果:
指令记录效果:
左边是输入错误key的指令,右边是正确的,大家知道有什么用了吧!
程序源代码...
程序中没有使用STL,数据结构都是自己实现的,因为当初觉得调试器的难点就在于数据结构方面,也刚好可以顺便复习一下数据结构,如果对这方面没兴趣的话那部分内容可以跳过,程序中都有注释.
如果有什么问题,或者你对这个有啥意见或者建义的话,都可以与我联系。
如果你发现源码在你机器上不能编译,请安装windows xp sp2 SDK或者更高版本的SDK!
平台: Windows XP SP2 + windows xp sp2 SDK + VC6 sp6