• 标 题:chm帮助编辑器v2.6 注册码破解详谈之一*脱壳篇* (3千字)
  • 作 者:TAE!
  • 时 间:2001-2-4 13:36:15
  • 链 接:http://bbs.pediy.com

其实没这个必要,是应peterchen要求所写!
    就先说说软件的脱壳吧!它用upx加壳.
    第一种脱壳方法:trw+冲击波0.2
启动冲击波,点击Trace,然后运行要脱壳的软件,此时冲击波会显示一个数值(这里应该是00488C78),这
就是程序的入口.
trw载入文件,Ctrl+N,
            g 00488C78
            MakePe 或 pedump
脱壳成功!

    第二种脱壳方法:只用trw.
    用trw载入程序,选择加载,这时TRW弹出,按一次F10,程序来到这里:
:004BA000 60                      pushad
:004BA001 E800000000              call 004BA006
一直按F10运行到上面这一行,注意这个call一定要进去,因为你再按一次F10的话,程序就运行了!
于是按F8进入:
* Referenced by a CALL at Address:
|:004BA001 
|
:004BA006 83CDFF                  or ebp, FFFFFFFF
:004BA009 31DB                    xor ebx, ebx
:004BA00B 5E                      pop esi
:004BA00C 8DBEFA6FF4FF            lea edi, dword ptr [esi+FFF46FFA]
:004BA012 57                      push edi
:004BA013 668187F4830B000100      add word ptr [edi+000B83F4], 0001
:004BA01C 81C6B3010000            add esi, 000001B3
:004BA022 EB0A                    jmp 004BA02E

到了这里,再继续按F10跳转到 004BA02E,继续跟踪

:004BA02E 01DB                    add ebx, ebx
:004BA030 7507                    jne 004BA039
:004BA032 8B1E                    mov ebx, dword ptr [esi]
:004BA034 83EEFC                  sub esi, FFFFFFFC
:004BA037 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA030(C)
|
:004BA039 72ED                    jb 004BA028     
:004BA03B B801000000              mov eax, 00000001

在004BA039这一行程序将*向上*跳到004BA028,进行循环解压,而我们没有必要跟着它走,所以将光标
定位于004BA03B,按F7,这样就省去了许多步骤了,接着软件还会有很多类似于这里的地方,都可以用这
种方法跳过去.若是程序向下跳跃的时候,就不要多此一举了,让它跳就是了,还要注意的是按F7前,最好
先在跳转的地方设个断点,再bd掉,这样即使判断错误,也还有的救,be就可以了继续跟踪了.继续向下走:
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004BA04F(C), :004BA05A(C)
|
:004BA040 01DB                    add ebx, ebx
:004BA042 7507                    jne 004BA04B      \\这里会*向下*跳转,让它跳就是了.
:004BA044 8B1E                    mov ebx, dword ptr [esi]
:004BA046 83EEFC                  sub esi, FFFFFFFC
:004BA049 11DB                    adc ebx, ebx

这两种情况已经明白了吧!那我就省去一些了.
来到这里

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA177(C)
|
:004BA18A 240F                    and al, 0F
:004BA18C C1E010                  shl eax, 10
:004BA18F 668B07                  mov ax, word ptr [edi]
:004BA192 83C702                  add edi, 00000002
:004BA195 EBE2                    jmp 004BA179

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA173(C)
|
:004BA197 61                      popad  运行到这里以后看看下面这个跳转
:004BA198 E9DBEAFCFF              jmp 00488C78    //这里程序便完成来内存中的解工作,
                                                    将要跳到程序入口点00488C78
然后就来到了这里:
00488C78  PUSH EBP    //在这里下MAKEPE命令(但我的TRW经常出错,Why)或是Pedump
00488C79  MOV  EBP,ESP  但若你用了Pedump那脱壳后的文件将不能在其它操作系统和
                          其它机器上运行!
 
到trw目录中,这时看见一个文件在那儿,这就是我们脱壳后的文件,运行一下,挺好的!