【文章标题】: 【原创】去掉类似KeyGen运行时的音乐
【文章作者】: ddsoft
【作者主页】: www.33vc.com
【软件名称】: 点点-多开补丁
【下载地址】: 附件
【加壳方式】: UPX
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
本人学医,业余时间学了点C++编程,去年看《疯狂的程序员》得知看雪,注册后,发现文章看不懂。很少来,2010年2月放寒假时开始学习汇编,几天前才
买到《加密与解密》。初学破解,难免有错误,希望大家多多指教。
目前有点心得,继续努力,可惜CrakeMe要kx才能下载。哪位大哥能送个邀请码就好了。。。
查壳为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo。
在此介绍几中种常用方法脱去此壳。目前技术不到家,模拟跟踪和最后一次异常法还不太会用。,
1.脱壳机。最简单,但学不到真正的技术。
2.两步断点法。点工具栏上的M或按ALT+M,到达内存镜像,.rsrc这一行,
按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也就是00401000处),按F2下断点!然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP!0042322E
3.ESP定律。
OD载入后第一行就是PUSHAD ,条件反射就知道可以用ESP定律了。这是我最喜欢的方法。
4.一步到达OEP。
因为有PUSHAD,必有popad,所以,OD载入后按Ctrl+F,输入:popad(适合少数壳,包括UPX,ASPACK壳),然后按下F2,F9运行到OEP 0042322E 的上一行了。
0042322E > 8D4424 80 lea eax,dword ptr ss:[esp-80] 00423232 6A 00 push 0 00423234 39C4 cmp esp,eax 00423236 ^ 75 FA jnz short Unpack_.00423232 00423238 83EC 80 sub esp,-80 0042323B - E9 32ECFDFF jmp Unpack_.00401E72 00423240 0000 add byte ptr ds:[eax],al 00423242 0000 add byte ptr ds:[eax],al 00423244 0000 add byte ptr ds:[eax],al 00423246 0000 add byte ptr ds:[eax],al 00423248 0000 add byte ptr ds:[eax],al
这是什么语言写的,感觉OEP有点怪啊。高手指点一下!OEP不会找错了吧。但脱壳后很正常。
脱掉壳后,开始去声音。一般是在界面启动后的下面几行代码就是声音了。
OD载入脱壳文件后直接F5运行起来,这时声音也有了。按F12暂停,按ALT+K,看到
0012FFAC <jmp.&user32.DialogBoxParamA> ,右键显示调用,按F2下断,OD重装载入,运行后,程序暂停在00401F18 call <jmp.&user32.DialogBoxParamA>了,
F8单步走,可以看到这时出现声音。F7进去,进入系统领空,ALT+F8返回,可以看到,很明显我们已经找到关键地方了。删除所有断点。
004010BC 83F8 01 cmp eax,1 004010BF 75 27 jnz short Unpack_.004010E8 004010C1 FF15 C4434000 call dword ptr ds:[4043C4] ; BASSMOD.BASSMOD_MusicFree 004010C7 6A 06 push 6 004010C9 6A 00 push 0 004010CB 6A 00 push 0 004010CD 8B45 08 mov eax,dword ptr ss:[ebp+8] 004010D0 83C0 04 add eax,4 004010D3 50 push eax 004010D4 6A 01 push 1 004010D6 FF15 C8434000 call dword ptr ds:[4043C8] ; BASSMOD.BASSMOD_MusicLoad 004010DC 83F8 01 cmp eax,1 004010DF 75 07 jnz short Unpack_.004010E8 004010E1 FF15 CC434000 call dword ptr ds:[4043CC] ; BASSMOD.BASSMOD_MusicPlay
将最后一行004010E1 NOP掉,保存文件,怎么样,声音已经没了吧。。
第二种方法:更常用,但稍显麻烦,OD直接载入后,F8单步走,不进CALL,出现声音时,记下地址,在前面几行下断。
PS:我认为用查找字符串的方法,找it,xm,s3m,mtm,mod,等格式后缀的音乐应该也可以找到。但我尝试后没看到可以参考的字符串。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2010年02月26日 9:53:10