再談小李登錄檔大師 v1.11的註冊以及另類序號產生器的編寫 -高手莫進 (4千字)

看雪資料發表於2001-10-07

題目:小李登錄檔大師 v1.11的註冊以及另類序號產生器的編寫
下載地址:www.csdn.net 中國共享軟體中心
目的:獲取註冊碼,並寫出另類序號產生器。
工具:Trw2000 v1.22
    首先用fi檢視一下程式(習慣了),還好,沒加殼。再執行一下程式,看看程式不註冊有哪些限制。該程式不註冊時,啟動的時候會出來一個框,叫你輸入註冊名字和註冊碼。大概瞭解一下後,準備開工了:
方法一:(最常用的方法)
    執行程式,輸入註冊名字和隨便輸入註冊碼,Ctrl+N撥出Trw2000,bpx hmemcpy,F5返回,點選註冊,被斷下來後 bc * 清除斷點,pmodule返回程式領空,按F12 8次就報錯,於是重來,按F12 7次,小心來到以下地方:
    ……
* Possible StringData Ref from Code Obj ->"key"
                                  |
:0047F563 BADCF64700              mov edx, 0047F6DC
:0047F568 E8EB53FDFF              call 00454958
:0047F56D A1D0824800              mov eax, dword ptr [004882D0]
:0047F572 8B00                    mov eax, dword ptr [eax]
:0047F574 E83F4DFDFF              call 004542B8
:0047F579 8D55F0                  lea edx, dword ptr [ebp-10]
:0047F57C 8B83DC020000            mov eax, dword ptr [ebx+000002DC]
:0047F582 E8B106FBFF              call 0042FC38
:0047F587 8B55F0                  mov edx, dword ptr [ebp-10]
:0047F58A A1A8804800              mov eax, dword ptr [004880A8]
:0047F58F 8B00                    mov eax, dword ptr [eax]
:0047F591 8B8064030000            mov eax, dword ptr [eax+00000364]
:0047F597 E848E4FEFF              call 0046D9E4
:0047F59C 8D45FC                  lea eax, dword ptr [ebp-04]
:0047F59F 8B15A8804800            mov edx, dword ptr [004880A8]
:0047F5A5 8B12                    mov edx, dword ptr [edx]
:0047F5A7 8B9264030000            mov edx, dword ptr [edx+00000364]
:0047F5AD 8B524C                  mov edx, dword ptr [edx+4C] ;<-D EDX可看到真註冊碼
:0047F5B0 E84344F8FF              call 004039F8        ;**在此中斷,寫另類序號產生器
:0047F5B5 8D55EC                  lea edx, dword ptr [ebp-14]
:0047F5B8 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:0047F5BE E87506FBFF              call 0042FC38
:0047F5C3 8B45EC                  mov eax, dword ptr [ebp-14]
:0047F5C6 8B55FC                  mov edx, dword ptr [ebp-04]
:0047F5C9 E82247F8FF              call 00403CF0
:0047F5CE 755F                    jne 0047F62F    ;****爆破注意點之一
:0047F5D0 8D55E4                  lea edx, dword ptr [ebp-1C]
    ……
    由於程式很簡單,我也不想多講(其實是我對演算法很糊塗,呵呵),下面是另類序號產生器的編寫:
   
程式名稱:小李登錄檔大師1.11.exe
中斷地址:47F5B0
中斷次數:1
第一位元組:EB
指令長度:5
註冊碼->記憶體方式 EDX


方法二:
考慮到程式啟動肯定也要比較註冊碼的,而且註冊碼放在登錄檔裡,於是我們換個斷點來試試看:
用Trw2000 Load 該程式,下斷點 bpx regqueryvalueexa,F5返回,被斷下來好幾次,小心找到正確斷下來的地方,按F10來到如下地方:
    ……
* Possible StringData Ref from Code Obj ->"user"
                                  |
:00485CFF BAE05D4800              mov edx, 00485DE0
:00485D04 8B06                    mov eax, dword ptr [esi]
:00485D06 E879ECFCFF              call 00454984
:00485D0B 8B55EC                  mov edx, dword ptr [ebp-14]
:00485D0E 8B8364030000            mov eax, dword ptr [ebx+00000364]
:00485D14 E8CB7CFEFF              call 0046D9E4
:00485D19 8D4DE8                  lea ecx, dword ptr [ebp-18]

* Possible StringData Ref from Code Obj ->"key"
                                  |
:00485D1C BAF05D4800              mov edx, 00485DF0
:00485D21 8B06                    mov eax, dword ptr [esi]
:00485D23 E85CECFCFF              call 00454984
:00485D28 8B45E8                  mov eax, dword ptr [ebp-18]
:00485D2B 8B9364030000            mov edx, dword ptr [ebx+00000364]
:00485D31 8B524C                  mov edx, dword ptr [edx+4C]  ;<-EDX 為正確的註冊碼
:00485D34 E8B7DFF7FF              call 00403CF0
:00485D39 752E                    jne 00485D69  ;***爆破注意點之二
:00485D3B 8D4DE0                  lea ecx, dword ptr [ebp-20]
    ……
    很簡單吧,另類序號產生器如下(注意:這個序號產生器與前面那個用起來不一樣的,必須得先執行程式,填入註冊碼和註冊碼並點選註冊後才好用,而前面那個可以直接用的):
   
程式名稱:小李登錄檔大師1.11.exe
中斷地址:485D34
中斷次數:1
第一位元組:EB
指令長度:5
註冊碼->記憶體方式 EDX

********************************
    寫完了,好累啊,這兩天共寫了4篇破文,為了加入BCG嘛,再累也不怕,呵呵。希望能對比我更菜的朋友有所幫助,祝大家每天都在進步!

相關文章