逆向破解程序脱壳篇-压缩壳-飞外

所谓 壳 就是专门压缩的工具。
这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。
程序的入口点如果我们找到OEP我们就能快速脱壳就类似于找到钥匙就能开门壳就是一把锁OEP就是锁孔IAT就是指针脱壳的话可能要修复指针如果没有指针就相当于人只有一个身体没有灵魂壳可能会对指针进行处理,修复输入表就是修复IAT段首和段尾段首,是上一段的结尾也是下一段的开头一段是以retn开始和retn结尾。我们经常听到在段首下断,所以我们要找的就是retn下面第一个push,段首是以push开始滴,所以我们不会在retn那里下段而段尾我们是在retn处下断,因为软件的子程序是以retn返回到某一地方所以返回的时候要在retn出下断。
ESP定律的原理就是 堆栈平衡 原理。1、在命令行下断hresp-4(此时的ESP就是OD载入后当前显示的值)
2、hrESP(关键标志下一行代码所指示的ESP值(单步通过))CALL
1.向堆栈中压入下一行程序的地址;
2.JMP到call的子程序地址处。RETN
与call对应的就是RETN了。对于RETN我们可以这样来理解:
1.将当前的ESP中指向的地址出栈;
2.JMP到这个地址。
1.F8,观察OD右上角寄存器中ESP有没有实现(红色)2.命令行下DD ******(当前代码ESP值),回车3.DD就选中下端地址,断点 硬件访问 DWORD断点,F9运行,到跳转处按F8到OEP
2.点选项 调试选项 忽略全部 CTRL+F2重载3.ALT+N打开内存镜像,找程序第一个.rsrc F2下断 SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断 SHIFT+F9或无异常按F9,到OEP1、载入DO之后,alt+m
2.近CALL F7,远CALL F8,实现向下的跳转。3.有回跳处,下一句代码处 F4(右键 代码断点运行到所选)4.大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP最后一次异常1.OD打开 点选项 调试选项 去掉所有异常 CTRL+F2重载.2.SHIFT+F9.只到程序运行,记下次数M3.CTRL+F2重载 按SHIFT+F9(次数为M-1次)4.按CTRL+G 输入OE右下角的SE句柄前的地址.5.F2下断 SHIFT+F9到断点处.6.去断按F8,到OEP.OEP大全
常用脱壳工具:
1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan,
2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid
3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE
4、PE文件编辑工具PEditor,ProcDump32,LordPE
5、重建Import Table工具:ImportREC,ReVirgin
6、ASProtect脱壳专用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只对ASPr V1.1有效),loader,peid1、介绍了什么是压缩壳,什么是加密壳2、脱壳原理3、脱壳常用的工具4、4种脱壳方法及修复5、各种语言OEP特征6、压缩壳这几种方法几乎够用了,如果出现冷门壳,用这些方法脱不掉,可以用之间说的打补丁的方法。现在压缩壳都有很多自动脱壳机,但是加密壳呢?学习手工脱壳不是为了单纯去学怎么脱这一种壳,学习的是技巧,以后遇到其他的没有脱壳机的壳要尝试手工去脱,就像一个网站注入点,你可以用sqlmap去注入,如果有waf呢?Sqlmap脚本绕不过去呢?不还得靠手工去试,工具是死的,人是活的.