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