这里的练习题目是reversing.kr 的Easy Crack
我自己用upx加壳工具给它加了个壳,由于原文件逻辑简单,所以用它来练练手
之后用到的工具是IDA和Ollydbg
0x00 在正式调试之前需要知道的一些操作
1.单步追踪法向下调试一般用的是F8(单步步过)
2.遇到红色的向上箭头说明运行到此处之后会向上跳转,对于单步跟踪法来说是不能让它发生的,所以点击下一行,F4运行到该处。
3.遇到灰色箭头:灰色说明它没有起作用,直接F8就行,并不会向上跳转。
4.如果看到popad指令,说明在下面不远处会有一个大跳转(跳到另一个区段) ,即程序即将运行到OEP (真正的程序入口点)。
5.在快到popad的时候可能程序会跑飞,如下图的第一个箭头所指
0040BAC0 FF96 A8B00000 call dword ptr ds:[esi+0xB0A8]
那么我们可以直接F4到0x400AC6。
0x01 脱壳
*有了上述的了解之后,经过耐心的调试,程序来到了OEP。
注意看,jump的目标地址是0x401188, 而当前程序所处的地址是0x40BB03, 跨度如此之大,说明我们离成功不远。
*F8单步运行,到了最后一步。
*在0x401188处右键 -> 用Ollydump脱壳调试进程,点脱壳。
小trick:alt+m可以看内存映像(memory map),如下图
可以看到0x401188 属于UPX0区段,而0x40BB03 属于UPX1,验证了上面的说法。
0x02 验证
用IDA32位打开。
第一张是未脱壳的结果。
第二张是脱壳之后的结果。
可以看到脱壳之后flag很容易就可以看到是Ea5yR3versing, 但很迷的是用file命令或者是DIE工具扫出来还是有upx壳==
作者: LB919
出处:http://www.cnblogs.com/L1B0/
如有转载,荣幸之至!请随手标明出处;