• 标 题:来一篇:暴力破解Crystal Button 1.31A (7千字)
  • 作 者:号号
  • 时 间:2002-10-13 13:42:46
  • 链 接:http://bbs.pediy.com

暴力破解Crystal Button 1.31A

破 解 者:AK47[FCG]
使用工具:<Trw1.23><SuperBPM><Fi><Hiew><PE Explorer 1.8>
          <ImportRECv1.4.2+><loader><PEditor>
软件说明:Crystal Button“水晶按钮”是一个用来创建专业品质的用于网络的图形的工具。您可以创建多种三维的玻璃、金属、塑料甚至XP样式的按钮。您可以创作导航栏,用不同的鼠标掠过效果来创建按钮——突出显示、按压和其它。“水晶按钮”能轻松创建3D图像。您可以修改图像材料和文字,照明,边框类型,形状以及更多!
开工啦!!!!!!!!
第一步:
用FI检测显示为 “ASProtect v1.2? Alexey ”好说请出 loader找到它的入口点:00432b00
运行Trw1.23还有SuperBPM
下断点:bpx 017f:00432b00
运行Crystal Button被拦截,下命令:suspend 返回,用PEditor的tasks来抓取内存,保存文件为DUMPED.EXE。下一步进行修复,运行ImportRECv1.4.2+,选取Crystal Button.exe后在OEP中输入
得到的入口点:00032b00点击IAT AutoSearch再点击get imports 和
show invalid用右键单击被选中的部分用trace level1 (disasm)修复,
发现还有一部分没有被修复,用右键菜单中的pulgin trace(asprotect 1.2x emul)就可以全部修复了。
好!!点击Fix dump 在对话框中选中刚才得到的DUMPED.EXE,得到Dumped_.exe这个就是被脱了壳的Crystal Button,运行试一下没有问题。到此脱壳成功。
进行第二步:
先看一下它需要修改的地方:1 .无法保存方案和方案另存为
                          2. 运行程序有提示注册的对话框
                          3. 导出的图像带有trial字样的图片
先解决 1.无法保存方案和方案另存为:
经过跟踪来找到这里:

:00409D70 64A100000000            mov eax, dword ptr fs:[00000000]
:00409D76 6AFF                    push FFFFFFFF
:00409D78 68CC8B4800              push 00488BCC
:00409D7D 50                      push eax
:00409D7E 64892500000000          mov dword ptr fs:[00000000], esp
:00409D85 81ECA8000000            sub esp, 000000A8
:00409D8B 56                      push esi
:00409D8C 8BF1                    mov esi, ecx
:00409D8E E8E98D0700              call 00482B7C
:00409D93 8B4004                  mov eax, dword ptr [eax+04]
:00409D96 8B80C0000000            mov eax, dword ptr [eax+000000C0]
:00409D9C 8B48F8                  mov ecx, dword ptr [eax-08]
:00409D9F 85C9                    test ecx, ecx
:00409DA1 0F85A6020000            jne 0040A04D————》》》这里是关键
:00409DA7 6A02                    push 00000002
:00409DA9 8D4C2414                lea ecx, dword ptr [esp+14]
:00409DAD E81EC70100              call 004264D0
:00409DB2 8D4C2410                lea ecx, dword ptr [esp+10]
:00409DB6 C78424B400000000000000  mov dword ptr [esp+000000B4], 00000000
:00409DC1 E8A45D0600              call 0046FB6A
:00409DC6 83F801                  cmp eax, 00000001
:00409DC9 0F854F020000            jne 0040A01E
:00409DCF 53                      push ebx
:00409DD0 57                      push edi
:00409DD1 E8A68D0700              call 00482B7C
:00409DD6 8B7804                  mov edi, dword ptr [eax+04]
:00409DD9 687CD24B00              push 004BD27C
:00409DDE 8D4C2414                lea ecx, dword ptr [esp+14]
:00409DE2 E8F2470600              call 0046E5D9
:00409DE7 6874D24B00              push 004BD274
:00409DEC 8D4C2410                lea ecx, dword ptr [esp+10]
:00409DF0 C68424C000000001        mov byte ptr [esp+000000C0], 01
:00409DF8 E8DC470600              call 0046E5D9
:00409DFD 8B00                    mov eax, dword ptr [eax]
:00409DFF 81C7386E0000            add edi, 00006E38
:00409E05 8BF0                    mov esi, eax
:00409E07 8B07                    mov eax, dword ptr [edi]
用HIEW 将00409DA1    jne 0040A04D 改为Je就可以成功地使用保存方案和方案另存为的功能。
解决2. 运行程序有提示注册的对话框
每次程序运行的时候就会提示注册,现在就是要去掉它:
经跟踪来到:
:0046FB6A B8E4B64800              mov eax, 0048B6E4
:0046FB6F E88434FCFF              call 00432FF8
:0046FB74 83EC18                  sub esp, 00000018
:0046FB77 53                      push ebx
:0046FB78 56                      push esi
:0046FB79 8BF1                    mov esi, ecx
:0046FB7B 57                      push edi
:0046FB7C 8965F0                  mov dword ptr [ebp-10], esp
:0046FB7F 8975E4                  mov dword ptr [ebp-1C], esi
:0046FB82 8B4648                  mov eax, dword ptr [esi+48]
:0046FB85 8B7E44                  mov edi, dword ptr [esi+44]
:0046FB88 8945E8                  mov dword ptr [ebp-18], eax
:0046FB8B E8EC2F0100              call 00482B7C
:0046FB90 837E4000                cmp dword ptr [esi+40], 00000000
:0046FB94 8B580C                  mov ebx, dword ptr [eax+0C]
:0046FB97 741E                    je 0046FBB7------》》》这时是关键
:0046FB99 E8DE2F0100              call 00482B7C
:0046FB9E 8B580C                  mov ebx, dword ptr [eax+0C]
:0046FBA1 6A05                    push 00000005
:0046FBA3 FF7640                  push [esi+40]
:0046FBA6 53                      push ebx
将0046FB97    je 0046FBB7中的je改为jne就可以完成去掉提示注册的对话框的任务
下面进行最后一项:解决 3. 导出的图像带有trial字样的图片
用PE Explorer 1.8打开Dumped_.exe ,在资源的位图中的292项可以看到带有trial字样的图片
就是它,程序每次在使用导出的图像功能时,就是将它放在导出的图像上面。
好!咱们就将它删除,一定要注意在删除它之前得先选择“XP可视方式显示向导”并下一步下一步
一直到完成,然后才将它删除并保存为一个新的文件,我将它取名为:Button.exe
运行Button.exe看看能不能用,发现问题:在选用“导出的图像”功能时整个程序就时入了死循环。
好说,运行TRW,并下断点: pbx 0046fb6a 然后使用“导出的图像”功能被拦截,一直小心跟踪
看看它是在哪儿死循环,一直到:
|:0040B75C(C)
|
:0040B745 85C9                    test ecx, ecx
:0040B747 7C0D                    jl 0040B756
:0040B749 85D2                    test edx, edx
:0040B74B 7C09                    jl 0040B756
:0040B74D 0FAFC2                  imul eax, edx
:0040B750 0306                    add eax, dword ptr [esi]
:0040B752 C60408FF                mov byte ptr [eax+ecx], FF

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040B747(C), :0040B74B(C)
|
:0040B756 8B4318                  mov eax, dword ptr [ebx+18]
:0040B759 41                      inc ecx
:0040B75A 3BC8                    cmp ecx, eax
:0040B75C 7CE7                    jl 0040B745————》》》》注意这里

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040B743(C)
|
:0040B75E 8B431C                  mov eax, dword ptr [ebx+1C]
:0040B761 42                      inc edx
:0040B762 3BD0                    cmp edx, eax
:0040B764 7CD1                    jl 0040B737————》》》还有这里

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040B732(C)
|
:0040B766 8D4D98                  lea ecx, dword ptr [ebp-68]
:0040B769 C645FC01                mov [ebp-04], 01
:0040B76D E83A710600              call 004728AC
:0040B772 C745D0C40C4900          mov [ebp-30], 00490CC4
:0040B779 8D4DD0                  lea ecx, dword ptr [ebp-30]
:0040B77C C745FC04000000          mov [ebp-04], 00000004
:0040B783 E8E37B0600              call 0047336B
跟踪发现问题就在:
    0040B75C    jl 0040B745
和  0040B764    jl 0040B737
分别将它们的JL改为JNL就可以了。
运行一下完全正常,导出的图像看一下:那个讨厌的带有trial字样的图片不见了!!!!!
到此破解完成。由于没有仔细测试,也不知有什么方有错,但有一点可以肯定,导出的文件有那个
讨厌的标志了。