eXeScpe是不是有時間限制?第一次破解成功,請大俠們指點 (5千字)

看雪資料發表於2001-02-09

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

相關文章