一点脱壳经验
asprotect版本多,升级快,每一次小小的升级,都足以使以前的脱壳方法或工具失效,没有一种自动脱壳工具是万能的。这里是caspr的作者SAC/UG2000对asprotect的评价:
ASProtect是一个非常强大的win32保护工具。它拥有压缩(compression)、加密(encryption)、反跟踪代码(anti-debugging code)、反-反汇编代码(anti-disassembler code)、crc校验(crc checking),反脱壳(anti-dumping)等特点。它使用了 Blowfish,Twofish,TEA等强劲的加密算法,还用RSA1024 - 非常强劲的公钥加密算法 (very strong public keys cryptographic algorithm )- 作为注册密钥生成器(sregistration keys generation)。(注:公钥加密算法属于非对称密钥算法体制,与对称密钥体制相对。)它还通过API钩子(API hooks,包括importhooks(GPA hook)和export hooks)与加壳的程序进行通讯。
ASProtect v1.1甚至 用到了 Win95.Marburg's 多态变形引擎(polymorphic engine)。
ASProtect v1.11c 增加了 反Apihook代码(anti-Apihook code(stolen from Win32.Crypto)) 和BPE32 的多态变形引擎(BPE32's polymorphic engine.)。
现在的大问题是:ASProtect究竟是一个超级病毒还是一个商业软件?(Is it a super virus or a commercial protector?)
怎么样,是不是已经对asprotect望而生畏了?
因此我对asprotect的作者Alexey Solodovnikov(从名字看应该是个俄国人)非常钦佩。不过不用怕。
公欲善其事,必先利其器。
要脱asprotect加的壳,似我等菜鸟,只能使用工具。我的工具箱里有:
fi243,检测文件壳的类型
trw1.23,不用多说;
bw2k02,冲击波2000,用来找入口点EP;
SuperBPM,辅助设断工具,确保trw能够中断成功;
peditor,修正脱壳后的文件;
ImportREC1.2beta2,用来修复脱壳后文件的import表;
此外还有专用自动脱壳工具,如rad,caspr等。
实在不行,脱不下来或脱下来不能用,只有用内存补丁了。我推荐ppatcher3.93,比常见的3.60版增加了许多有用的新特性,如aitForWindowName,下面会讲到。URL未知,我是从作者那里直接获得的。
我的运行环境是win98第二版,没有安装softice。
概括一下一般的脱壳步骤:
第一步,用fi243确定壳的类型,有自动脱壳工具的,用工具脱。否则第二步。
第二步,用bw2k确定程序的真正入口点OEP,不妨记为xxxx;若找不到,请试一试Softice + icedump: 使用Icedump 的/tracex 命令可能找到OEP 的地址;若还找不到,只能手动跟踪,看你的功力和运气了。
第三步,用trw装入(load)程序,下bpx xxxx,g。中断后用pedump命令脱壳,格式是
pedump c:\test\test.exe。不能中断时运行superbpm,选中erase,重复第三步操作。若脱出来的test.exe可以运行,则脱壳完毕,否则第四步。
第四步, 用peditor 修正test.exe,用Import REConstructor v1.2 beta2修复输入表,参照以下这篇文章
若还是不行,建议你用内存补丁或放弃暴破,去算注册号吧。
以下以S-Spline 2.04为例,讲一讲手动脱壳和修复import表的具体操作步骤。S-Spline 2.04
第一步,用fi243确定壳的类型。fi243没有GUI界面,是命令行程序,用法是这样:
c:\fi243\fi s-spline.exe。
Fi已经检测不出新版asprotect了,所以如果遇到检测不出的类型,就有可能是asprotect。接着往下做吧。
第二步,用bw2k确定程序的真正入口点OEP,
运行bw2k,面板上的entry point显示为00000000。按track钮,再运行s-spline.exe,程序界面出来之后,bw2k的面板上entry point显示为7e910,这就是入口点了。退出s-spline,我们又迈出了可喜的第二步。
第三步,运行SuperBPM,选中erase(默认为不选中),确保trw能够中断。
第四步,运行trw2k,按browse找到并选中s-spline.exe,按loader装入。下bpx 47e910,g。trw弹出时输入pedump c:\test\test.exe,退出trw(不退也行),但不要退出s-spline。在c:\test下会找到test.exe。这个程序目前还不能运行,因为它的import表是被加密的。
第五步,用peditor修正test.exe。运行peditor,按browse找到test.exe,确定。再按sections,弹出一个窗口,显示每个section的信息。在窗口中点右键,在弹出菜单中选dumpfixer(RS=VS & RO=VO),提示'DONE',这时可以关闭peditor了。
第六步,运行ImportREC1.2beta2,在Attach to an Active Process下拉框中选中s-spline.exe,然后在左下方OEP中输入7e910(就是EP-image base=47e910-400000),按IAT AutoSearch。出现对话框Found Something!=》
“Found address which may be in the Original IAT.Try 'Get Import'”
按Get Import,再按Show Invalids 按钮,在Imported Function Found框中会有很多蓝色的项目。在其中点右键,选Trace Level1(Disasm),再按Show Invalids 按钮,可以看到所有的dll都为valid:YES字样。输入表到此完成。
第七步,修复已脱壳的程序test.exe。选择Add new section(缺省是选上的),按Fix Dump,并选择刚才Dump出来的文件test.exe。ImpRECT 会在该文件所在目录生成一个新的文件:test_.exe ,这就是修复后的文件。至此终于大功告成,点击test_.exe可以运行了。
在遇到asprotect之前,procdump一直是我最爱的脱壳工具,它能脱的壳很多,操作方便,稳定性好,很少令我失望。直到那一次,一连碰到三个asprotect加壳的软件:
Aspack2.11,加壳软件,asprotect 1.1b 加壳,未注册版有时间限制和功能限制;以前的下载地址找不到了,今天找到一个带破解文件的,URL: http://mud.sz.jsinfo.net/per/aaron/files/compressors/win/aspack211.zip。
Picturetoexe2.30,图片转可执行文件工具,asprotect 1.0 加壳,未注册版制作出得文件有公司标志;http://www.wnsoft.com/apr
Advanced ZIP Password Recovery3.51(azpr),zip密码恢复工具,asprotect 1.1 加壳;未注册版只能破解5位以下密码。ftp://www.newhua.com/azpr.zip
有兴趣的不妨试一试,练练手。
那段时间好痛苦啊。找不到真正的入口点(OEP),中断不了,壳脱不下来,脱下来的又不能运行,真是往事不堪回首。到现在也还谈不上破解,只是想把自己的一点经验写出来,希望弟兄们看了能少走点弯路。
提示:
Aspack用上述方法脱壳修复后,运行时显示
Exception EaccessViolation in module ASPACK_.EXE at 007fb318.
Access violation at address bfc54c.Read of addreds bfc54c.
不能运行。失败。但是可以用rad06(http://mud.sz.jsinfo.net/per/aaron/files/unpackers/win/rad_v06.zip)成功脱壳,脱壳后自动去掉时间限制,但仍为未注册版。
Picturetoexe2.30用上述方法脱壳失败,impREC修复的程序运行时提示非法操作。用caspr v0.952脱壳成功。
Azpr用上述办法修复成功,文件可以运行,但对其进行修改后,提示找不到api函数,不能运行。无奈只能用内存补丁ppatcher3.93。这里有thewd提供的破解方法。
首先在注册表中添加如下内容
[HKEY_LOCAL_MACHINE\Software\Elcom\Advanced ZIP Password Recovery\Registration]
"Code"="00023112193920061941tcKxzxKUhzLjuAAD"
以下是ppatcher配置文件(.ppc)的内容。
-------------------------------------------------------------------
#Process Patcher Configuration File
Version=3.93
WaitForWindowName=AZPR*
PatchAuthor=thewd
PatchContactInformation=thewd@hotmail.com
DisplayName=Advanced ZIP Password Recovery v3.51
Filename=azpr.exe
Filesize=294912
Address=0x416CE7:0x89:0x8B // (1)
Address=0x416CE8:0xC8:0xC2
#End of Configuration File
#Cracking Notes
(1) Registration Code Example: 00023112193920061941tcKxzxKUhzLjuAAD
First 4 characters are ignored.
Next 16 characters are constant (MD5 Hash)
Last 16 characters are hashed (MD5) and compared against
the resource 'DB' for a match.
i.e.
mov eax, ecx (Bad Code) ==> mov eax, edx (Correct Code)
---------------------------------------------------------------------
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课