• 标 题:eXeScpe是不是有时间限制?第一次破解成功,请大侠们指点 (5千字)
  • 作 者:Dickie
  • 时 间:2001-2-9 15:07:14
  • 链 接:http://bbs.pediy.com

破解eXeScope ver6.00
目标软件:eXeScope ver6.00
软件作用:小巧强大的汉化(破解)工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字串表等.软件提示不注册的话可用2星期 .
破解工具:TRW2000
1.粗追踪:
运行TRW2000 eXeScope,注册名:Dickie 注册码:78787878
Ctrl+N            唤出trw
bpx hmemcpy        设断
g
按eXeScope注册框的确定,程序被拦截!
bc *              取消断点
PMODULE            来到eXeScope上空
程序开始于004253b1,按8次f12后出现错误提示,程序结束于:0048088b
2.细追踪:
拦截后,按7次f12后来到0048079a
按f10走过3个CALL后来到这里

:004807D1 call 00488130                  |调用后面有一个检查al是否为空,是就怎样,
:004807D6 test al, al                    |不是又怎样,比较可疑,先记下,
:004807D8 je 0048086B                    |果然跳了就会die

****************************************************************************************************************
:00488130 push ebp                      ||按f8进入CALL 00488130
:00488131 mov ebp, esp
:00488133 push ecx
:00488134 push ebx
:00488135 mov dword ptr [ebp-04], edx
:00488138 mov eax, dword ptr [ebp-04]
:0048813B call 00403D30
:00488140 xor eax, eax
:00488142 push ebp
:00488143 push 004881B2
:00488148 push dword ptr fs:[eax]
:0048814B mov dword ptr fs:[eax], esp
:0048814E xor ebx, ebx
:00488150 mov eax, dword ptr [ebp-04]
:00488153 call 00403B7C
:00488158 cmp eax, 0000000A              |此刻eax里是你的注册码位数,和0A比较不是就跳(die),
:0048815B jne 0048819C                  |所以修正注册码为7878787878
:0048815D mov edx, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"A1910"
                                        |
:00488160 mov eax, 004881C8              |将A1910放进[eax]
:00488165 call 00403E08                  |可疑,进去看看,不然就~~~~~             
:0048816A dec eax
:0048816B je 0048817D
:0048816D mov edx, dword ptr [ebp-04]

###################################################################################################################
:00403E08 test eax, eax                    |进入CALL 00403E08             
:00403E0A je 00403E4C
:00403E0C test edx, edx
:00403E0E je 00403E41
:00403E10 push ebx
:00403E11 push esi
:00403E12 push edi
:00403E13 mov esi, eax                    |此刻A1910放进[esi]
:00403E15 mov edi, edx                    |我的pw放进[edi]
:00403E17 mov ecx, dword ptr [edi-04]      |将我注册码位数(就是A)放进ecx
:00403E1A push edi
:00403E1B mov edx, dword ptr [esi-04]      |将A1910位数(就是5)放进edx
:00403E1E dec edx                          |
:00403E1F js 00403E3C                      |no jump
:00403E21 mov al, byte ptr [esi]          |把A放入al
:00403E23 inc esi                          |并指向A1910里的第二位
:00403E24 sub ecx, edx                    |A-5=5放入ecx,看了后面就知道作计数器
:00403E26 jle 00403E3C                    |no jump                 

:00403E28 repnz scasb                      |在你的注册码前5位找有没有A                       
:00403E2A jne 00403E3C                    |没有就会跳(die)
:00403E2C mov ebx, ecx
:00403E2E push esi
:00403E2F push edi
:00403E30 mov ecx, edx
:00403E32 repz cmpsb                      |将你注册码的2,3,4,5位和1910比较
:00403E34 pop edi
:00403E35 pop esi
:00403E36 je 00403E44                      |如果是就跳,于是再次修正注册码:A191078787
……
:00403E44 pop edx                          |蹦到了这里
:00403E45 mov eax, edi                    |此刻eax指向注册码中的第二位,edx指向第一位
:00403E47 sub eax, edx                    |相减得1,放在eax里
:00403E49 pop edi
:00403E4A pop esi
:00403E4B pop ebx
:00403E4C ret                              |返回CALL 00403E08 (到0048816a处)
###################################################################################################################
:0048816A dec eax                          |这里(eax)=0
:0048816B je 0048817D                      |跳~~~
……
:0048817D mov eax, dword ptr [ebp-04]      <----|这一段是把你注册码9,10位的ASCⅡ值相加
:00488180 movzx eax, byte ptr [eax+08]          |然后除以0A,所得余数和04比较,相同就
:00488184 mov edx, dword ptr [ebp-04]          |将1放入BL,所以码值和为68比较合适
:00488187 movzx edx, byte ptr [edx+09]          |也就是说注册码最后2位和为8
:0048818B add eax, edx                          |修正注册码:A191078708
:0048818D mov ecx, 0000000A                    |
:00488192 cdq                                  |
:00488193 idiv ecx                              |
:00488195 cmp edx, 00000004                    |
:00488198 jne 0048819C                          |
:0048819A mov bl, 01                      <----|
……
:004881B9 mov eax, ebx                          |将那个BL放入AL
……
:004881BE ret                                  |返回CALL 00488130 (就是本文开始说的地方)
****************************************************************************************************************
:004807D6 test al, al
:004807D8 je 0048086B                          |这里没有跳,就注册成功!
……
总结:
注册名:Dickie(可为任意)注册码:A1910***08(*为任意,末2位的和应为8)
注:注册码也适用eXeScope 6.10

最后要说的是写破解过程真的很累,看雪学苑那么多的教程都是前辈们辛苦整理的,向他们致敬!
                                                                                Dickie.01.02.09