讓註冊碼直接顯示在輸入框裡面。給跟我同樣是初學者的朋友一點思路~ (4千字)

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

Registry Crawler 4.0.0.3
下載:漢化補丁: http://www.hanzify.org/skipli/chinese/HAC-RCrawler4003-Fire.zip
破解工具:TRW2000 HIEW W32DASM RH ULTRAEDIT
我今天從硬碟翻出一個軟體Registry Crawler,發現沒有註冊,但是演算法又比較複雜,要跟比較長時間這個軟體又是明碼比較,所以我就用SetWindowTextA顯示出來,這樣直接輸入註冊名按解鎖軟體自動顯示註冊碼在,註冊碼的TEXT裡面,看起來感覺瞞不錯的。又用ULTRAEDIT修改了一下出錯以後顯示的對話方塊,哇,赫然一個序號產生器。註冊成功想重新註冊請刪掉HKEY_LOCAL_MACHINE\Software\4Developers\RCrawler\4D這個鍵值
就可以重新註冊了~

:0040AEDE 6800714400              push 00447100
:0040AEE3 E95AC20300              jmp 00447142    (原本是LEA ECX,DWORD PTR [ESI+00000380])
:0040AEE8 90                      nop            我把把跳轉到底下儲存控制程式碼的記憶體的儲存地址,以便等下顯示使用。
:0040AEE9 E8E02A0200              call 0042D9CE  軟體所有設定視窗的標題文字都呼叫這裡,所以我們有現成的。

:0042D9CE 8B4138                  mov eax, dword ptr [ecx+38]
:0042D9D1 85C0                    test eax, eax
:0042D9D3 751D                    jne 0042D9F2
:0042D9D5 FF742404                push [esp+04]
:0042D9D9 FF711C                  push [ecx+1C]

* Reference To: USER32.SetWindowTextA, Ord:025Eh  設定視窗的標題文字或控制元件的內容的API
                                                 
:0042D9DC FF1524864400            Call dword ptr [00448624] 
:0042D9E2 EB0E                    jmp 0042D9F2
:0042D9E4 8B10                    mov edx, dword ptr [eax]
:0042D9E6 FF742404                push [esp+04]
:0042D9EA 8BC8                    mov ecx, eax
:0042D9EC FF9280000000            call dword ptr [edx+00000080]

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0042D9D3(C), :0042D9E2(U)
|
:0042D9F2 C20400                  ret 0004

:0040AE00 8D442414                lea eax, dword ptr [esp+14]    把註冊碼移入EAX,D EAX就可以看到正確的註冊碼
:0040AE04 E909C30300              jmp 00447112            跳轉我的程式碼就是顯示出註冊碼的

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00447133(U)
|
:0040AE09 50                      push eax
:0040AE0A E801570100              call 00420510      這個CALL就是比較註冊碼的

:00447112 50                      push eax 
:00447113 51                      push ecx
:00447114 52                      push edx          堆疊儲存一定要注意不然很容易非法操作
:00447115 50                      push eax          EAX 裡面是註冊碼
:00447116 8B0D708D4500            mov ecx, dword ptr [00458D70]
:0044711C 85C9                    test ecx, ecx      由於註冊成功以後每次啟動都比較一次註冊碼所以都要
                                                    執行我們的程式碼,所以我測試控制程式碼是否存在,來達到不
                                                    執行底下那個CALL,不然如註冊成功後執行會出錯。
:0044711E 740A                    je 0044712A
:00447120 E8A968FEFF              call 0042D9CE      呼叫這個CALL 把註冊碼顯示出來
:00447125 E901000000              jmp 0044712B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044711E(C)
|
:0044712A 58                      pop eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00447125(U)
|
:0044712B 5A                      pop edx
:0044712C 59                      pop ecx
:0044712D 58                      pop eax
:0044712E 6810E64500              push 0045E610
:00447133 E9D13CFCFF              jmp 0040AE09
:00447138 00000000000000000000    BYTE 10 DUP(0)



* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040AEE3(U)
|
:00447142 8D8E80030000            lea ecx, dword ptr [esi+00000380]  儲存控制程式碼的記憶體的儲存地址
:00447148 50                      push eax
:00447149 B8708D4500              mov eax, 00458D70
:0044714E 8908                    mov dword ptr [eax], ecx
:00447150 58                      pop eax       
:00447151 E9933DFCFF              jmp 0040AEE9

總的感覺就是對軟體DIY,就是堆疊好搞好最重要,其他我不知道。我是初級菜鳥,不敢亂說話。
但是總的感覺有些軟體用這樣做序號產生器還是瞞實用的。

相關文章