搜尋引擎工廠(Search Engine Builder)V1.595

看雪資料發表於2015-11-15

標 題:搜尋引擎工廠(Search Engine Builder)V1.595 

發信人:fly

時 間:2003/02/28 08:43am

詳細資訊: 



簡單演算法――搜尋引擎工廠(Search Engine Builder)V1.595


軟體大小:  604 KB
軟體語言:  英文
軟體類別:  國產軟體 / 共享版 / 網頁輔助
應用平臺:  Win9x/NT/2000/XP
加入時間:  2002-12-28 09:32:11
下載次數:  3492
推薦等級:  ***
開 發 商:  http://www.seamoontech.com/

【軟體簡介】:

   為你的網站自動生成一個站內搜尋引擎。很多人訪問您的網站只是為了得到其中一部分資訊而不想全部瀏覽完畢您的網站。如果讓您的客戶一頁頁的尋找這小部分資訊,無疑一部分客戶會失去耐心而轉向別處。Cool Search Maker 就是為了解決這個問題而產生的。它快速的索引整個網站並自動生成一個高效的搜尋引擎,這是一個HTML檔案,把它加入到您的網站上即可。使用 Cool Search Maker 生成搜尋引擎,您所須做的只是點幾下滑鼠而已。有了它,您不必耗費大量的時間親自去寫繁雜的搜尋程式碼了。Cool Search Maker還有許多附加的特性如:自定義摸板用來生成漂亮的搜尋頁面,自定義搜尋結果的輸出格式,為本地文字檔案生成搜尋引擎以便於查詢。

【軟體限制】:NAG、功能限制。

【作者宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!

【破解工具】:TRW2000娃娃修改版、FI2.5、W32Dasm黃金版

―――――――――――――――――――――――――――――
【過    程】:

SearchMaker.exe是VC++6.0編寫。無殼。反彙編方便了。^-^
程式要求重啟驗證註冊碼。程式把試煉碼寫入了登錄檔,啟動時進行比較。
TRW除錯時當然可下斷點:BPX Regqueryvalueexa do"dd*(esp+8)"
只是裝入後必須按很多下F5鍵,煩人。

於是想起以前破過的FlashGet、EZ Extract Resource等等同種驗證方式(重啟驗證),學習了許多大俠的經驗,想起了一點小辦法。

在反彙編程式碼裡查詢“RegCode”,一般會有2處,那麼其中的1處就是核心了。省我按幾十次F5鍵了。呵呵

OK,查到了。直接BPX 40DC92,重啟時攔下!
Let's Go!

--------------------------------------------------------
* Possible StringData Ref from Data Obj ->"RegUserName"
                                 |
:0040DC4C 682C194600              push 0046192C
:0040DC51 8D542418                lea edx, dword ptr [esp+18]
:0040DC55 B305                    mov bl, 05

* Possible StringData Ref from Data Obj ->"RegInfo"
                                 |
:0040DC57 6824194600              push 00461924
:0040DC5C 52                      push edx
:0040DC5D 8BCE                    mov ecx, esi
:0040DC5F 889C247C050000          mov byte ptr [esp+0000057C], bl
:0040DC66 E807920300              call 00446E72
:0040DC6B 50                      push eax
:0040DC6C 8D4C2418                lea ecx, dword ptr [esp+18]
:0040DC70 C684247005000006        mov byte ptr [esp+00000570], 06
:0040DC78 E8387A0200              call 004356B5
:0040DC7D 8D4C2410                lea ecx, dword ptr [esp+10]
:0040DC81 889C246C050000          mov byte ptr [esp+0000056C], bl
:0040DC88 E8EF780200              call 0043557C
:0040DC8D 68145C4600              push 00465C14

* Possible StringData Ref from Data Obj ->"RegCode"
                                 |
:0040DC92 681C194600              push 0046191C
                                 ====>中斷在這!

:0040DC97 8D442428                lea eax, dword ptr [esp+28]

* Possible StringData Ref from Data Obj ->"RegInfo"
                                 |
:0040DC9B 6824194600              push 00461924
:0040DCA0 50                      push eax
:0040DCA1 8BCE                    mov ecx, esi
:0040DCA3 E8CA910300              call 00446E72
:0040DCA8 50                      push eax
:0040DCA9 8D4C241C                lea ecx, dword ptr [esp+1C]
:0040DCAD C684247005000007        mov byte ptr [esp+00000570], 07
:0040DCB5 E8FB790200              call 004356B5
:0040DCBA 8D4C2420                lea ecx, dword ptr [esp+20]
:0040DCBE 889C246C050000          mov byte ptr [esp+0000056C], bl
:0040DCC5 E8B2780200              call 0043557C
:0040DCCA 51                      push ecx
:0040DCCB 8D54241C                lea edx, dword ptr [esp+1C]
:0040DCCF 8BCC                    mov ecx, esp
:0040DCD1 89642414                mov dword ptr [esp+14], esp
:0040DCD5 52                      push edx
:0040DCD6 E816760200              call 004352F1
:0040DCDB 51                      push ecx
:0040DCDC 8D44241C                lea eax, dword ptr [esp+1C]
:0040DCE0 8BCC                    mov ecx, esp
:0040DCE2 89642424                mov dword ptr [esp+24], esp
:0040DCE6 50                      push eax
:0040DCE7 C684247805000008        mov byte ptr [esp+00000578], 08
:0040DCEF E8FD750200              call 004352F1
:0040DCF4 8BCE                    mov ecx, esi
:0040DCF6 889C2474050000          mov byte ptr [esp+00000574], bl
:0040DCFD E86E160000              call 0040F370
:0040DD02 33FF                    xor edi, edi
:0040DD04 3BC7                    cmp eax, edi
:0040DD06 7408                    je 0040DD10
:0040DD08 89AECC010000            mov dword ptr [esi+000001CC], ebp
:0040DD0E EB52                    jmp 0040DD62

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040DD06(C)
|
:0040DD10 39AEC0000000            cmp dword ptr [esi+000000C0], ebp
:0040DD16 7444                    je 0040DD5C
:0040DD18 51                      push ecx
:0040DD19 8D54241C                lea edx, dword ptr [esp+1C]
:0040DD1D 8BCC                    mov ecx, esp
:0040DD1F 89642420                mov dword ptr [esp+20], esp
:0040DD23 52                      push edx
:0040DD24 E8C8750200              call 004352F1
:0040DD29 51                      push ecx
:0040DD2A 8D44241C                lea eax, dword ptr [esp+1C]
:0040DD2E 8BCC                    mov ecx, esp
:0040DD30 89642418                mov dword ptr [esp+18], esp
:0040DD34 50                      push eax
:0040DD35 C684247805000009        mov byte ptr [esp+00000578], 09
:0040DD3D E8AF750200              call 004352F1
:0040DD42 8BCE                    mov ecx, esi
:0040DD44 889C2474050000          mov byte ptr [esp+00000574], bl

:0040DD4B E8C0070000              call 0040E510
                                 ====>核心CALL!

:0040DD50 3BC7                    cmp eax, edi
:0040DD52 7408                    je 0040DD5C
                                 ====>不能跳!

:0040DD54 89AECC010000            mov dword ptr [esi+000001CC], ebp
:0040DD5A EB06                    jmp 0040DD62

--------------------------------------------------------
F8進入關鍵CALL。40DD4B  call 0040E510

* Referenced by a CALL at Address:
|:0040DD4B  
看看下面吧,藏了幾個黑名單:"ttdown"、"crsky"、".com"、"jetdown",這些都是破解網站,喜歡用自己的站名來做軟體的註冊名,統統禁殺了!
這些黑名單使我想起EZ Extract Resource的黑名單,幾乎差不多,後來一看:這2個軟體是一個公司開發的(http://www.seamoontech.com/),怪不得如此相象。

:0040E510 6AFF                    push FFFFFFFF
:0040E512 6870B64400              push 0044B670
:0040E517 64A100000000            mov eax, dword ptr fs:[00000000]
:0040E51D 50                      push eax
:0040E51E 64892500000000          mov dword ptr fs:[00000000], esp
:0040E525 81ECD4000000            sub esp, 000000D4
:0040E52B 53                      push ebx
:0040E52C 56                      push esi
:0040E52D 8BF1                    mov esi, ecx
:0040E52F B801000000              mov eax, 00000001
:0040E534 68145C4600              push 00465C14
:0040E539 898424E8000000          mov dword ptr [esp+000000E8], eax
:0040E540 8986D0010000            mov dword ptr [esi+000001D0], eax
:0040E546 8B8424F0000000          mov eax, dword ptr [esp+000000F0]
:0040E54D 50                      push eax
:0040E54E E842620100              call 00424795
:0040E553 83C408                  add esp, 00000008
:0040E556 85C0                    test eax, eax
                                 ====>測試使用者名稱是否為空

:0040E558 0F8477010000            je 0040E6D5
                                 ====>不能跳!

:0040E55E 8B8C24F0000000          mov ecx, dword ptr [esp+000000F0]
:0040E565 68145C4600              push 00465C14
:0040E56A 51                      push ecx

:0040E56B E825620100              call 00424795
:0040E570 83C408                  add esp, 00000008
:0040E573 85C0                    test eax, eax
                                 ====>測試註冊碼是否為空

:0040E575 0F845A010000            je 0040E6D5
                                 ====>不能跳!

* Possible StringData Ref from Data Obj ->"ttdown"
====>黑名單!
                                 |
:0040E57B 683C1A4600              push 00461A3C
:0040E580 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0040E587 E846440200              call 004329D2
:0040E58C 33DB                    xor ebx, ebx
:0040E58E 83F8FF                  cmp eax, FFFFFFFF
:0040E591 7542                    jne 0040E5D5
====>不能跳!

* Possible StringData Ref from Data Obj ->"crsky"
====>黑名單!
                                 |
:0040E593 68341A4600              push 00461A34
:0040E598 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0040E59F E82E440200              call 004329D2
:0040E5A4 83F8FF                  cmp eax, FFFFFFFF
:0040E5A7 752C                    jne 0040E5D5
====>不能跳!

* Possible StringData Ref from Data Obj ->".com"
====>黑名單!
                                 
:0040E5A9 682C1A4600              push 00461A2C
:0040E5AE 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0040E5B5 E818440200              call 004329D2
:0040E5BA 83F8FF                  cmp eax, FFFFFFFF
:0040E5BD 7516                    jne 0040E5D5
====>不能跳!

* Possible StringData Ref from Data Obj ->"jetdown"
====>黑名單!
                                 |
:0040E5BF 68241A4600              push 00461A24
:0040E5C4 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0040E5CB E802440200              call 004329D2
:0040E5D0 83F8FF                  cmp eax, FFFFFFFF
:0040E5D3 7406                    je 0040E5DB
====>應跳!

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040E591(C), :0040E5A7(C), :0040E5BD(C)
|
:0040E5D5 899ED0010000            mov dword ptr [esi+000001D0], ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E5D3(C)
|
:0040E5DB 55                      push ebp
:0040E5DC 8BAC24F0000000          mov ebp, dword ptr [esp+000000F0]
使用者名稱送eax

:0040E5E3 B165                    mov cl, 65
:0040E5E5 B061                    mov al, 61
:0040E5E7 8B75F8                  mov esi, dword ptr [ebp-08]
                                 ====>使用者名稱長度送esi
                                 ====>? ESI=3

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
===>下面這段程式碼是從[esp+10]依次處放入“searmake”字串

:0040E5EA 884C240D                mov byte ptr [esp+0D], cl
:0040E5EE 884C2413                mov byte ptr [esp+13], cl
:0040E5F2 33C9                    xor ecx, ecx
:0040E5F4 3BF3                    cmp esi, ebx
:0040E5F6 C644240C73              mov [esp+0C], 73
:0040E5FB 8844240E                mov byte ptr [esp+0E], al
:0040E5FF C644240F72              mov [esp+0F], 72
:0040E604 C64424106D              mov [esp+10], 6D
:0040E609 88442411                mov byte ptr [esp+11], al
:0040E60D C64424126B              mov [esp+12], 6B
:0040E612 885C2414                mov byte ptr [esp+14], bl
:0040E616 7E3D                    jle 0040E655
:0040E618 57                      push edi
:0040E619 8D7C341B                lea edi, dword ptr [esp+esi+1B]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E650(C)
                                 ====>以下就是運算核心了!

:0040E61D 8A0429                  mov al, byte ptr [ecx+ebp]
                                 ====>依次取使用者名稱。
                                 ====>1、?AL=66 即f的HEX值  
                                 ====>2、?AL=6C 即l的HEX值
                                 ====>3、?AL=79 即y的HEX值

:0040E620 8BD1                    mov edx, ecx
:0040E622 81E207000080            and edx, 80000007
:0040E628 7905                    jns 0040E62F
:0040E62A 4A                      dec edx
:0040E62B 83CAF8                  or edx, FFFFFFF8
:0040E62E 42                      inc edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E628(C)
|
:0040E62F 0FBE541410              movsx edx, byte ptr [esp+edx+10]
                                 ====>依次從“searmake”字串中取字元入EDX
                                 ====>1、?EDX=73 即s的HEX值  
                                 ====>2、?EDX=65 即e的HEX值
                                 ====>3、?EDX=61 即a的HEX值

:0040E634 0FBEC0                  movsx eax, al
                                 ====>1、?EAX=66 即f的HEX值  
                                 ====>2、?EAX=6C 即l的HEX值
                                 ====>3、?EAX=79 即y的HEX值

:0040E637 8BD9                    mov ebx, ecx
                                 ====>1、?EBX=0
                                 ====>2、?EBX=1
                                 ====>3、?EBX=2

:0040E639 03DA                    add ebx, edx
                                 ====>1、EBX=0+73=73
                                 ====>2、EBX=1+65=66
                                 ====>3、EBX=2+61=63

:0040E63B 03C3                    add eax, ebx
                                 ====>1、EAX=66+73=D9
                                 ====>2、EAX=6C+66=D2
                                 ====>3、EAX=79+63=DC

:0040E63D BB09000000              mov ebx, 00000009
                                 ====>9送ebx

:0040E642 03C6                    add eax, esi
                                 ====>esi是使用者名稱長度
                                 ====>1、EAX=D9+3=DC
                                 ====>2、EAX=D2+3=D5
                                 ====>3、EAX=DC+3=DF  

:0040E644 99                      cdq
:0040E645 F7FB                    idiv ebx
                                 ====>EAX依次除以9
                                 ====>1、EAX=DC/9=18餘4
                                 ====>2、EAX=D5/9=17餘6
                                 ====>3、EAX=DF/9=18餘7  

:0040E647 80C230                  add dl, 30
                                 ====>餘數入DL,依次加30                              
                                 ====>1、DL=4+30=34
                                 ====>2、DL=6+30=36
                                 ====>3、DL=7+30=37  

:0040E64A 41                      inc ecx
                                 ====>ecx依次增1

:0040E64B 8817                    mov byte ptr [edi], dl
                                 ====>DL->[edi]
                                 ====>迴圈3次後,D EDI=764
                                 ****這是真碼的前3個數!!!

:0040E64D 4F                      dec edi
:0040E64E 3BCE                    cmp ecx, esi
                                 ====>比較使用者名稱是否取完

:0040E650 7CCB                    jl 0040E61D
                                 ====>沒有取完,跳上去繼續迴圈
                                 ====>共迴圈3次。

:0040E652 33DB                    xor ebx, ebx
:0040E654 5F                      pop edi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E616(C)
|
:0040E655 8D4668                  lea eax, dword ptr [esi+68]
                                 ====>?ESI=3
                         實際上是使用者名稱長度加上68的結果送eax
                                 ====>過此 ?EAX=6B

:0040E658 B909000000              mov ecx, 00000009
                                 ====>9送ecx

:0040E65D 99                      cdq
:0040E65E F7F9                    idiv ecx
                                 ====>EAX/9=B餘8
                                 ====>餘數8入DL

:0040E660 8B8424F4000000          mov eax, dword ptr [esp+000000F4]
                                 ====>使用者輸入的假註冊碼送eax

:0040E667 5D                      pop ebp
:0040E668 80C230                  add dl, 30
                                 ====>DL=8+30=38
                                 ****這是真碼的最後1個數!!!

:0040E66B 88543414                mov byte ptr [esp+esi+14], dl
                                 ====>DL移入[esp+17]處

:0040E66F 885C3415                mov byte ptr [esp+esi+15], bl
:0040E673 8D742414                lea esi, dword ptr [esp+14]
                                 ====>真正的註冊碼送ESI


*****************************************************
至此演算法分析完畢。呵呵,追註冊碼挺快。
但是分析、整理成這篇心得卻花了我半天的工夫!
希望能夠給如我般的初學者一點用處!!!
*****************************************************


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E695(C)
         這裡向下是將真假註冊碼逐位的進行比較,一個經典的組合!

:0040E677 8A10                    mov dl, byte ptr [eax]
                                 ====>D EAX=試煉碼

:0040E679 8ACA                    mov cl, dl
:0040E67B 3A16                    cmp dl, byte ptr [esi]
                                 ====>D ESI=真碼!!!!
               
:0040E67D 751C                    jne 0040E69B
:0040E67F 3ACB                    cmp cl, bl
:0040E681 7414                    je 0040E697
:0040E683 8A5001                  mov dl, byte ptr [eax+01]
:0040E686 8ACA                    mov cl, dl
:0040E688 3A5601                  cmp dl, byte ptr [esi+01]
:0040E68B 750E                    jne 0040E69B
:0040E68D 83C002                  add eax, 00000002
:0040E690 83C602                  add esi, 00000002
:0040E693 3ACB                    cmp cl, bl
:0040E695 75E0                    jne 0040E677

―――――――――――――――――――――――――――――
【KeyMake之記憶體序號產生器】:

中斷地址:40E67B
中斷次數:1
第一位元組:3A
指令長度:2

記憶體方式:ESI              

―――――――――――――――――――――――――――――
【註冊資訊儲存】:

[HKEY_CURRENT_USER\Software\SeaMoonTech\SEARCHMAKER\RegInfo]
"RegUserName"="fly"
"RegCode"="7648"

―――――――――――――――――――――――――――――
【整       理】:

Registartion Name:fly
Registartion Code:7648

―――――――――――――――――――――――――――――

   
                   Cracked By 巢水工作坊――fly【OCN】

                          2003-1-24  17:00

相關文章