【文章标题】: 【原创】去掉类似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
上传的附件 多开补丁.v0.0.1-patch.rar