chuiyan121 发表于 2022-1-27 22:18

The027. 初探脱壳,ACProtect V1.4X壳[另类脱壳]


The027. 初探脱壳,ACProtect V1.4X壳[另类脱壳]
关于脱壳的记录,已有大牛教科书式帖文了,我就按照自己的习惯记录下来,如有疑问欢迎交流指正。^_^

1、PEiD查壳,UltraProtect 1.x -> RISCO Software Inc.
https://s4.ax1x.com/2022/01/27/7jXvY6.png

2、OD载入,设置异常选项卡如下图。
https://s4.ax1x.com/2022/01/27/7jXqm9.png

Shift+F9运行,这里程序如果运行,则重载再试,总有一次会断下来,如下图。
https://s4.ax1x.com/2022/01/27/7jXLwR.png

SE句柄处数据窗口跟随,下内存访问断点。
Shift+F9运行,F2断点,再Shift+F9运行,再F2,再Shift+F9运行到如下地址,删除内存访问断点和两个F2断点。
运行到retn处,Alt+M打开内存映射窗口,在00401000处下F2断点,Shift+F9运行,到达假的OEP(0040A483)。
https://s4.ax1x.com/2022/01/27/7jXOT1.png

打开一个无壳VC6的程序,进行对比。标黄部分为被偷窃的代码。
https://s4.ax1x.com/2022/01/27/7jXjFx.png

我试过了,将标黄部分二进制复制,在假OEP往上翻,一共选择101个字节,我二进制粘贴后,新建EIP脱壳成功了。
二进制被偷窃代码如下:
55 8B EC 6A FF 68 C8 CB 40 00 68 A4 A5 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 68
53 56 57 89 65 E8 33 DB 89 5D FC 6A 02 FF 15 BC C2 40 00 59 83 0D F0 FF 40 00 FF 83 0D F4 FF 40
00 FF FF 15 C0 C2 40 00 8B 0D D0 FF 40 00 89 08 FF 15 C4 C2 40 00 8B 0D CC FF 40 00 89 08 A1 C8
C2 40 00 8B 00
https://s4.ax1x.com/2022/01/27/7jXxfK.png

现在的问题是我们在没有原程序的前提下,如何找到丢失的代码,目前我还不会,学会了再回来补充。

在ximo大牛的教程中,采用的方法能够让程序运行,能够DIY修改,但壳并没有脱掉。
下面再来试试ximo大牛的另类方法。
https://s4.ax1x.com/2022/01/27/7jjplD.png

上图方法类似ESP定律法,不同的是Shift+F9一直按,15次会跑飞,在第14次停下,如下图。大牛说这里就是最佳脱壳时机,虽然不明白为什么,先照做。
https://s4.ax1x.com/2022/01/27/7jjSSO.png

3、LordPE修正镜像大小,完整转存,ImportREC修复(插件修复,剩2个指针剪切掉)。需要注意的是OEP需填写假OEP的地址0040A483,而不是当前的00441E4D。
https://s4.ax1x.com/2022/01/27/7jj96e.png

上图转储程序后,查询不出是什么壳,程序不能运行。
https://s4.ax1x.com/2022/01/27/7jjimd.png

原因是转储程序的时候,用的是假OEP(0040A483),而脱壳的时候是在00441E4D,因此ImportREC在修复完指针后转储程序前,手动修改OEP地址为00441E4D – 基址00400000 = 00041E4D。
https://s4.ax1x.com/2022/01/27/7jjF0A.png

转储到文件后,查询不到壳,也没有脱掉壳。但程序可以运行,可以DIY编辑了。
https://s4.ax1x.com/2022/01/27/7jjCOH.png

总结:这节学得有点懵,主要是一些方法不知道怎么来的,希望在后面的学习中能解惑。




页: [1]
查看完整版本: The027. 初探脱壳,ACProtect V1.4X壳[另类脱壳]