某電子書註冊破解實錄,高手莫入。 (6千字)

看雪資料發表於2002-10-05

《新概念英語1-4冊》(電子書)破解實錄
時    間:2002-10-02
破解物件:《新概念英語1-4冊》(電子書)
破解工具:Language、TRW2000、Keymake
破解原因:《新概念英語1-4冊》是一本做得比較好的電子圖書,免費註冊免費使用。未註冊版本有時間(5天)、次數(10次)和每冊只能開啟第一課功能上的限制。唯一讓人感到不便的是它的註冊方式:一機一碼,註冊時還必須到作者的論壇上留帖申請。作者高興了或者在眾多的留帖中發現了你的帖子,那麼恭喜你喜獲註冊碼。否則,你就耐心地等著吧!何時能夠等到?那只有天知道了。既然是免費的,我們們破解它或者作個序號產生器什麼的,我想作者應該不會有什麼意見吧?大不了我們多去訪問訪問他的網站提升其訪問率不就得了(其實作者的用意就在於此)!用Language偵測該書為Delphi編寫的eBook工具製作、ASPack加殼。聽說Delph這玩易編寫的東西象VB那樣不太好弄,所以我們知難而退,到“看雪論壇”發帖請大師出手,沒成料想帖子還沒貼上半天就不知叫誰給刪了,唉,看來俺只得自力更生嘍 :(
保護方式:序列號! 一機一碼。
破解作者:duhe

破解經過:
1、執行TRW2000

2、執行《新概念英語1-4冊》,馬上就會出現註冊畫面。也可在該電子圖書視窗上點選“註冊”按鈕進行註冊。在註冊視窗內填入:“123456789000”(隨意);

3、下萬能斷點:bpx hmemcpy,按F5鍵返回註冊畫面,點選“確定”按鈕,程式被TRW2000攔截下來;

4、用bd *暫停萬能斷點bpx hmemcpy ;

5、下命令pmodule,再按F12鍵10次(11次出錯)和F10鍵一次,返回到《新概念英語1-4冊》領空,程式停留在下面的地方:

:0047876C FF92F0000000            call dword ptr [edx+000000F0] <---關鍵的Calll
:00478772 8B1568E54700            mov edx, dword ptr [0047E568]  <---程式停在這裡
:00478778 8802                    mov byte ptr [edx], al
:0047877A A168E54700              mov eax, dword ptr [0047E568]
:0047877F 803800                  cmp byte ptr [eax], 00
:00478782 7519                    jne 0047879D      <---如果跳轉,則可“試用”電子書
:00478784 6A00                    push 00000000
:00478786 A130E94700              mov eax, dword ptr [0047E930]
:0047878B 8B00                    mov eax, dword ptr [eax]
:0047878D 668B0D04884700          mov cx, word ptr [00478804]
:00478794 B201                    mov dl, 01
:00478796 E8C958FDFF              call 0044E064      <---call出出錯視窗
:0047879B EB3E                    jmp 004787DB

6、從上面的程式段來看,如果在00478782  jne 0047879D  處跳轉,則僅能試讀電子書,而不能成功註冊,所以據此估計關鍵的地方應該在其上方的0047876C  call dword ptr [edx+000000F0]。

7、重新設定斷點:bpx 0047876c ,程式在0047876C  call dword ptr [edx+000000F0]處被攔截,下命令:s 30:0 l ffffffff '123456789000' ,在資料視窗可以看到我們隨意輸入的錯誤的註冊碼,如果按F10鍵執行這個call語句,再用上面的s命令就能發現在錯誤的註冊碼之後緊跟著的就是正確的註冊碼(注意:這是跟蹤已經脫了殼的程式的結果,如果跟蹤原程式的話,只能在006cf805處看到你的註冊碼;如果單步執行程式走過00478796 call 0044E064  彈出出錯視窗後的話,那麼你就是查遍記憶體也查詢不到正確的註冊碼了,這就是為什麼用WinHexs搜尋不到真註冊碼的原因)!好了,我們們再重複第7步,在0047876C  call dword ptr [edx+000000F0]處按F8鍵跟進去瞧瞧看個究竟。

8、按F10鍵n次,來到這裡:

:004786CE 8B45F8                mov eax, dword ptr [ebp-08]
:004786D1 8B8BF8020000          mov ecx, dword ptr [ebx+000002F8]
:004786D7 5A                    pop edx
:004786D8 E81FF7FFFF            call 00477DFC    <--EAX指向我的機器碼:2228845782;
                                                        ECX指向我隨意輸入的註冊碼:123456789000;
                                                        EDX指向字串:1976110419740215
:004786DD 8BD8                    mov ebx, eax
:004786DF 33C0                    xor eax, eax
:004786E1 5A                      pop edx
:004786E2 59                      pop ecx
:004786E3 59                      pop ecx

    看樣子此處就是計算註冊碼的關鍵所在,在004786D8  call 00477DFC 處按F8鍵跟進去,
來到這裡:

:00477DFC 55                      push ebp            <---程式停在此處
:00477DFD 8BEC                    mov ebp, esp
:00477DFF 81C4FCFEFFFF            add esp, FFFFFEFC
:00477E05 53                      push ebx
:00477E06 56                      push esi
:00477E07 57                      push edi
:00477E08 33DB                    xor ebx, ebx
:00477E0A 895DFC                  mov dword ptr [ebp-04], ebx
:00477E0D 8BF9                    mov edi, ecx
:00477E0F 8BF2                    mov esi, edx
:00477E11 8BD8                    mov ebx, eax
:00477E13 33C0                    xor eax, eax
:00477E15 55                      push ebp
:00477E16 68637E4700              push 00477E63
:00477E1B 64FF30                  push dword ptr fs:[eax]
:00477E1E 648920                  mov dword ptr fs:[eax], esp
:00477E21 8D8DFCFEFFFF            lea ecx, dword ptr [ebp+FFFFFEFC]
:00477E27 8BD7                    mov edx, edi
:00477E29 8BC3                    mov eax, ebx
:00477E2B E864FEFFFF              call 00477C94                      <--計算註冊碼的call
:00477E30 8D95FCFEFFFF            lea edx, dword ptr [ebp+FFFFFEFC]
:00477E36 8D45FC                  lea eax, dword ptr [ebp-04]
:00477E39 E88ABFF8FF              call 00403DC8
:00477E3E 8B45FC                  mov eax, dword ptr [ebp-04]
:00477E41 8BD6                    mov edx, esi
:00477E43 E8ECC0F8FF              call 00403F34
:00477E48 0F94C0                  sete al
:00477E4B 8BD8                    mov ebx, eax
:00477E4D 33C0                    xor eax, eax
:00477E4F 5A                      pop edx
:00477E50 59                      pop ecx
:00477E51 59                      pop ecx
:00477E52 648910                  mov dword ptr fs:[eax], edx
:00477E55 686A7E4700              push 00477E6A

9、在00477E2B  call 00477C94 處按F8跟進去,按F10鍵n次,來到這裡:

:00477DB6 8B55E0                  mov edx, dword ptr [ebp-20]
:00477DB9 8BC7                    mov eax, edi
:00477DBB B9FF000000              mov ecx, 000000FF
:00477DC0 E83BC0F8FF              call 00403E00      <---EDX指向正確的註冊碼
:00477DC5 33C0                    xor eax, eax
:00477DC7 5A                      pop edx
:00477DC8 59                      pop ecx
:00477DC9 59                      pop ecx
:00477DCA 648910                  mov dword ptr fs:[eax], edx
:00477DCD 68F47D4700              push 00477DF4

10、關鍵的地方已經找到,該是做序號產生器的時候了!執行序號產生器編寫器:Keymake.exe ,點選選單“其他/記憶體序號產生器”,在視窗內輸入:
    中斷地址:477DC0
    中斷次數:1次
    第一位元組:E8
    指令長度:5

    選“記憶體方式:暫存器->EDX

11、小結:我的機器碼:2228845782,註冊碼:DRjpQRkcWgqh
    成功註冊後,會在登錄檔中建立如下鍵值:
HKEY_USERS\.DEFAULT\Software\eBook Edit Pro\Login\1C86BEB8\LoginUser: "2228845782"
HKEY_USERS\.DEFAULT\Software\eBook Edit Pro\Login\1C86BEB8\LoginPassword: "DRjpQRkcWgqh"

    看樣子,Delphi弄的東西並不可怕,關鍵是看你如何去做。
    完工!

相關文章