目录
CrackMe练习
这是吾爱破解论坛的第136练习题。输入name,serial后,不正确的情况下没有任何反应。界面如下图
破解思路
- 输入Name,Serial后没有任何反应。考虑是长度不符合,改变输入长度仍然没有反应。没有任何错误提示信息。
- 用DIE查壳工具查壳,没有加壳,是个VC6.0编译的MFC程序。
- 打开OD,拖到OD中。先使用插件plugin菜单中的中文字符串查找,智能查找,可以发现有"well done"类的字符串,猜测可能是成功时的提示信息。
- 双击字符串,定位到对应的汇编代码处。
- 发现有一处跳转进来,还有一处顺序执行下来。在其附近双击打断点调试。
- 点击按钮check it,发现确实断了下来。可以断定 jle处是关键跳。修改掉,直接jmp到成功地址处
- 先试运行一下,成功爆破。选中修改行,右键 "copy to exe" ------> copy all,再右键另存为另一个文件。
写一个简单的注册机
爆破已经成功,接下来进行静态分析。写一个简单的注册机
- 打开IDA,将原EXE拖动到IDA。仍然是先shift + F12搜索字符串。根据字符串的交叉引用定位到关键位置
-
- 发现流程图上更清晰的描述了程序的执行流程,找到关键跳位置,F5跳到源码处。
- C语言代码更清晰易懂了。就是各个变量名乱了些。没关系,打开调试断点运行下。跟踪大体的算法流程。打开VC,写注册机代码
- 至此,完成。将name, key输入到框里试验成功。
小结
在破解的过程中,通过IDA 和 OD 同时使用,效果会更好一些。IDA在查看程序流程上更清晰易懂。OD在调试爆破上更好一些。以上方法在无壳程序上比较实用。这个程序相对来说是比较简单的,适合新手用来练习