破解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