怎樣才能讓軟體成為自身的序號產生器-讓軟體自動輸出註冊碼的一種方法 (10千字)
怎樣才能讓軟體成為自身的序號產生器-讓軟體自動輸出註冊碼的一種方法
作 者:lzrlzr
信 箱:lzrlzr_crack@163.com
時 間:2003年3月3日
目標軟體:試卷生成系統III
主程式: Dandelion.exe 檔案大小:930304
下載網站:http://myprg.yeah.net
破解環境:Win98 第二版
破解工具:Peditor,hiew681,softice4.05
宣告: 此文僅用於學習及交流,若要轉載請保持文章完整。
由於給一家公司作電腦培訓考試,想出一份考試題,就從網上下載了一個試卷生成系統III,但這個軟體要求註冊,就隨手把它破解了。這個軟體破解挺簡單,是明文比較,在softice中下bpx
hmemcpy ,正確的註冊碼就可以從softice中跟蹤得到,但由於我一直想寫一篇軟體自動輸出註冊碼的的文章,剛好就拿它作例子了。
這個軟體對註冊碼的判斷有兩次,可能是單機版和網路版兩種版本的註冊碼不一樣,如果註冊碼不正確,彈出一個請輸入正確的註冊碼等等的提示視窗。註冊成功後註冊碼儲存在(試卷生成系統III(網路版)資料)檔案目錄中的SysDB08.DB資料庫中。刪檔案除這個資料庫檔案後,就又變為未註冊版本。
修改思想:
在得到正確的註冊碼的地址以後,加入一段呼叫Messagebox的程式碼,把正確的註冊碼輸出在Messagebox上。這是我以前的修改方法。(一般軟體都用到了Messagebox函式,基本上不用手工引入函式)
但在這個軟體的主程式 Dandelion.exe的輸入表(Import Table)中,竟沒有發現Messagebox函式,那麼它的註冊碼出錯的視窗是怎樣來的(這是我的第一反應),請看以下的關鍵程式碼的分析
======這一段是軟體註冊的關鍵程式碼
0167:0041F782 E8F9FCFFFF
CALL 0041F480 *********計算出正確的註冊碼的過程(1eb82h)。
0167:0041F787 8B45F8
MOV EAX,[EBP-08]******EAX 中存放的是真正的註冊碼。(A)
0167:0041F78A
50 PUSH
EAX
0167:0041F78B 8D55EC
LEA EDX,[EBP-14]
0167:0041F78E 8B83DC020000
MOV EAX,[EBX+000002DC]
0167:0041F794
E843A0FFFF CALL 004197DC
0167:0041F799 8B55EC
MOV EDX,[EBP-14]***EDX 中存放的是假註冊碼
0167:0041F79C
58 POP
EAX************EAX 中存放的是真正的註冊碼。
0167:0041F79D E8E619FEFF
CALL 00401188*******這是比較註冊碼是否正確的過程。
0167:0041F7A2 746C
JZ 0041F810*******跳走後,註冊正確。
0167:0041F7A4
BA84FA4100 MOV EDX,0041FA84
0167:0041F7A9 B8A4FA4100 MOV
EAX,0041FAA4
0167:0041F7AE E8051AFEFF
CALL 004011B8
0167:0041F7B3 85C0
TEST EAX,EAX
0167:0041F7B5 0F8544020000 JNZ
0041F9FF******如果不是網路版,跳走,出現錯誤視窗。
0167:0041F7BB 8D55FC
LEA EDX,[EBP-04]
0167:0041F7BE 8B83CC020000 MOV
EAX,[EBX+000002CC]
0167:0041F7C4 E8B723FEFF
CALL 00401B80
0167:0041F7C9 8D45FC
LEA EAX,[EBP-04]
0167:0041F7CC 50
PUSH EAX
0167:0041F7CD 8D55F4
LEA EDX,[EBP-0C]
0167:0041F7D0
8B83E4020000 MOV EAX,[EBX+000002E4]
0167:0041F7D6 E8A523FEFF CALL
00401B80
0167:0041F7DB 8B55F4
MOV EDX,[EBP-0C]
0167:0041F7DE
58 POP
EAX
0167:0041F7DF E88C19FEFF
CALL 00401170
0167:0041F7E4 8B45FC
MOV EAX,[EBP-04]
0167:0041F7E7
8D55F8 LEA
EDX,[EBP-08]
0167:0041F7EA E891FCFFFF
CALL 0041F480**********計算出正確的註冊碼的過程。
0167:0041F7EF
8B45F8 MOV
EAX,[EBP-08]******EAX 中存放的是真正的註冊碼。(B)
0167:0041F7F2 50
PUSH EAX
0167:0041F7F3 8D55EC
LEA EDX,[EBP-14]
0167:0041F7F6 8B83DC020000
MOV EAX,[EBX+000002DC]
0167:0041F7FC
E8DB9FFFFF CALL 004197DC
0167:0041F801 8B55EC
MOV EDX,[EBP-14]***EDX 中存放的是假註冊碼
0167:0041F804
58 POP
EAX************EAX 中存放的是真正的註冊碼。
0167:0041F805 E87E19FEFF
CALL 00401188*******這是比較註冊碼是否正確的過程。
0167:0041F80A 0F85EF010000 JNZ
0041F9FF*******不跳走,註冊正確。
=====================底下這一段是註冊碼正確以後的處理過程,就省略不講了
0167:0041F810 8B83EC020000 MOV
EAX,[EBX+000002EC]
0167:0041F816 E819A0FFFF
CALL 00419834
......
......
0167:0041F9F1 E8625EFFFF CALL
00415858
0167:0041F9F6 8BC3
MOV EAX,EBX
0167:0041F9F8
E82B24FEFF CALL 00401E28
0167:0041F9FD EB15
JMP 0041FA14
=======================================================
跳到這裡後,出現錯誤視窗。
這一段註冊碼不正確的處理過程,是我們分析的重點:
0167:0041F9FF
6A00 PUSH
00
0167:0041FA01 668B0D54FA4100 MOV
CX,[0041FA54]
0167:0041FA08 B201
MOV DL,01
0167:0041FA0A
B880FC4100 MOV EAX,0041FC80 **這是出現在視窗上的字串。
0167:0041FA0F E8445EFFFF CALL
00415858******這裡彈出錯誤視窗。**********(1)
0167:0041FA14 33C0
XOR EAX,EAX
0167:0041FA16 5A
POP EDX
0167:0041FA17 59
POP ECX
跟進(1)後,來到這裡:
0167:00415858 FF25E8DC4600 JMP
[0046DCE8]
0167:0041585E 8BC0
MOV EAX,EAX
分析:
註冊碼不正確後,跳到這裡,出現錯誤視窗,本來以為這是一個Messagebox,在softice中下bpx
Messagebox斷點,竟然沒有中斷,後來在 (1)處跟進後,才發現這裡是呼叫另外一個動態庫(vcl40.bpl)中的一個函式,於是猜測這是一個可以輸出各種視窗的函式,(後來試著改動了引數值以後,證明這個猜測是正確的)有了這個發現後,就想呼叫這個函式輸出註冊碼。
但首先得知道這個函式的原型和引數型別。分析這個函式的引數,共有四個,請看下面如何分析得到每一個引數的型別和值。
在0167:0041FA0F處向上看:
PUSH 00*************這是一個引數,猜測應是彈出視窗的父視窗的控制程式碼。一般值應是 0
MOV CX,[0041FA54]**這是第二個引數,跟蹤後可知 [0041FA54]中的值是04,
應該是彈出視窗的型別。
MOV DL,01**********這是第三個引數,應該是視窗上的圖示的型別,值01應該是代表錯誤的紅圖示。
MOV EAX,0041FC80 **這是出現在視窗上的字串。EAX中存放的是字串的首地址。
CALL 00415858********這個是輸出各種視窗的函式的呼叫。
把以上第二個引數,第三個引數值進行改變(加1或減1),從視窗介面的變化可以得到,
CX 是視窗按鈕的型別,CX值不同,視窗上的按鈕的多少和按鈕名程就不同
DL 是視窗上的圖型 DX值不同,視窗上的圖形就不同。
分析結果:
把這個函式的呼叫引數用匯編語言的過程來表達(為了方便理解,我給這個函式命名為 Message)
Message
PROTO hwnd:DWORD
CX 的值代表了彈出視窗的型別
DL 中的值是視窗上的圖示的型別,01是代表錯誤的紅圖示,02是一個提示圖示
EAX 中存放的是出現在視窗上的字串的首地址
修改軟體主程式:
經過以上的分析,得到Message的函式原型。下來就是在那個地方呼叫這個Message。跟蹤得知以上(A)和(B)處,註冊碼剛生成,EAX中存放的就是正確的註冊碼的首地址,那麼就在(A)和(B)處加入自已的程式碼,以下是我修改後的程式碼,請注意和原來不同的地方
0167:0041F77F 8D55F8
LEA EDX,[EBP-08]
0167:0041F782 E8F9FCFFFF
CALL 0041F480
0167:0041F787
8B45F8 MOV
EAX,[EBP-08]
0167:0041F78A 50
PUSH EAX
0167:0041F78B 6A00
PUSH 00************引數1
0167:0041F78D 66B90400 MOV
CX,0004*******引數2
0167:0041F791 90
NOP
0167:0041F792 90
NOP
0167:0041F793
90 NOP
0167:0041F794
B201 MOV
DL,02*********引數3,02值是一個提示圖示
0167:0041F796 90
NOP
0167:0041F797 90
NOP
0167:0041F798
90 NOP
0167:0041F799
E8BA60FFFF CALL 00415858********這就是輸出註冊碼的視窗的函式的呼叫
0167:0041F79E 90
NOP
0167:0041F79F 90
NOP
0167:0041F7A0 90
NOP
0167:0041F7A1 90
NOP
0167:0041F7A2
90 NOP
0167:0041F7A3
90 NOP
0167:0041F7A4
BA84FA4100 MOV EDX,0041FA84
0167:0041F7A9 B8A4FA4100 MOV
EAX,0041FAA4
0167:0041F7AE E8051AFEFF
CALL 004011B8
0167:0041F7B3 85C0
TEST EAX,EAX
0167:0041F7B5 90
NOP
0167:0041F7B6 90
NOP
0167:0041F7B7 90
NOP
0167:0041F7B8 90
NOP
0167:0041F7B9
90 NOP
0167:0041F7BA
90 NOP
0167:0041F7BB
8D55FC LEA
EDX,[EBP-04]
0167:0041F7BE 8B83CC020000
MOV EAX,[EBX+000002CC]
0167:0041F7C4 E8B723FEFF
CALL 00401B80
0167:0041F7C9
8D45FC LEA
EAX,[EBP-04]
0167:0041F7CC 50
PUSH EAX
0167:0041F7CD 8D55F4
LEA EDX,[EBP-0C]
0167:0041F7D0 8B83E4020000 MOV
EAX,[EBX+000002E4]
0167:0041F7D6 E8A523FEFF
CALL 00401B80
0167:0041F7DB 8B55F4
MOV EDX,[EBP-0C]
0167:0041F7DE 58
POP EAX
0167:0041F7DF E88C19FEFF
CALL 00401170
0167:0041F7E4
8B45FC MOV
EAX,[EBP-04]
0167:0041F7E7 8D55F8
LEA EDX,[EBP-08]
0167:0041F7EA E891FCFFFF
CALL 0041F480
0167:0041F7EF
8B45F8 MOV
EAX,[EBP-08]
0167:0041F7F2 50
PUSH EAX
0167:0041F7F3 6A00
PUSH 00************引數1
0167:0041F7F5 66B90400 MOV
CX,0004*******引數2
0167:0041F7F9 B201
MOV DL,02*********引數3,02值是一個提示圖示
0167:0041F7FB 90
NOP
0167:0041F7FC E85760FFFF
CALL 00415858********這就是輸出註冊碼的視窗的函式的呼叫
0167:0041F801
8B55EC MOV
EDX,[EBP-14]
0167:0041F804 58
POP EAX
0167:0041F805 E87E19FEFF
CALL 00401188
0167:0041F80A
E9F0010000 JMP 0041F9FF*******不讓軟體註冊
0167:0041F80F 90
NOP
0167:0041F810 8B83EC020000 MOV
EAX,[EBX+000002EC]
0167:0041F816 E819A0FFFF
CALL 00419834
執行結果:
修改後執行,在註冊時輸入學校名和姓名,輸入假的註冊碼,彈出一個視窗(見圖1),上面是真正的註冊碼,點確定後,又彈出一個視窗(見圖2),上面是另外一個版本的註冊碼。至此,修改成功。
一個軟體的破解,有多種方法。這個軟體也可以不這樣麻煩的輸出註冊碼,還有另外一種修改方法,直接將正確的註冊碼寫入軟體儲存註冊碼的地方,就更方便了,第二種修改方法的教程請大家來寫吧,我想告訴大家的就是如果破解時碰到困難,可以改變一下自已的分析思路,可能會有意想不到的收穫。
另外,我在破解時在這個軟體中發現這麼一段文字,但沒有看到軟體中彈出這個視窗介面:
:0041F5BD 8BC7
mov eax, edi
* Possible StringData Ref from Code Obj ->"恭喜你,你破解成功了。你是否覺得很容易呢?其實"
->"本系統的註冊碼並沒有設計得多複雜,只要提醒使用"
->"者要支援國產軟體而已。對於你的破解,我倒是想說"
->"一聲:“感謝你”,如果沒有你的破解,我的軟體將"
->"流行不起來。"
哈哈,原來如此。
相關文章
- 如何製作VB程式記憶體序號產生器--國內某軟體的序號產生器(隱去軟體資訊)
(14千字)2002-08-04記憶體
- 橋牌軟體Deep Finesse的序號產生器 (1千字)2015-11-15
- 即時語音提示 &
校對軟體InsTalk註冊碼及序號產生器-初學者請看 (24千字)2002-04-13
- Audio compositor註冊碼及序號產生器 (5千字)2002-04-06
- 密碼學-軟體加密技術和序號產生器制2020-04-06密碼學加密
- ePublisher Gold v1.3 的註冊碼及序號產生器2000-12-03Go
- 用r fl z使體育彩票隨機號碼產生器 v3.3 自動註冊。 (1千字)2001-03-25隨機
- 製作自己的記憶體序號產生器--------檔案隱藏精靈註冊碼獲取 (4千字)2015-11-15記憶體
- 守財奴1.9註冊分析+序號產生器原始碼2015-11-15原始碼
- 怎樣才能成為一名優秀的軟體開發者 (轉)2007-12-09
- Universe 1.63註冊碼生成分析及序號產生器原碼(上) (2千字)2001-11-12
- 社群遊戲伴侶
V1.0註冊碼的計算,序號產生器 (30千字)2003-05-09遊戲
- 《中華壓縮 6.01》註冊碼破解及序號產生器 (14千字)2001-08-19
- 破解accoustica
2.21(帶序號產生器)----讓高手見笑了:) (11千字)2002-03-31
- 軟體採用非明碼比較的KEYMAKE記憶體序號產生器制作
(754字)2015-11-15記憶體
- 《硬碟清道夫》的序號產生器 一個極其簡單的軟體! (649字)2001-08-17硬碟
- C#實現軟體授權,限定MAC執行(軟體license管理,簡單軟體序號產生器制)2024-08-28C#Mac
- 音樂處理acoustica2.0註冊碼破解及序號產生器 (8千字)2002-04-06
- 銷售自動化讓CRM軟體更加的智慧2009-04-29
- 軟體定義的革命:讓SD-Branch成為可能2021-05-18
- 快速郵件地址搜尋器3.0 註冊碼破解!!!!----讓我生氣的軟體,竟然過濾我!!!!等會連另一個破了!!!
(1千字)2001-04-15
- 軟體測試人員怎樣才能成為大牛?2016-05-05
- 軟體工程—讓軟體包自帶commitid2017-09-28軟體工程MIT
- 影音神探V2.02 bY E語言 (註冊碼與爆破附記憶體序號產生器) (8千字)2015-11-15記憶體
- Quickness 3.1
註冊演算法分析 + 序號產生器原始碼(tc2) (15千字)2003-04-13UI演算法原始碼
- 《32BITFTP的破解實錄》==>讓程式成為我們的"序號產生器"-->申請BCG第二篇 (5千字)2001-06-29FTP
- 應屆生沒經驗,怎樣才能找到軟體測試的工作?2020-08-05
- Flash Cam 1.79註冊演算法分析與序號產生器制作以及爆破方法
(7千字)2015-11-15演算法
- winzip的通用序號產生器 (2千字)2001-12-10
- 小弟為共享軟體作者製作的管理軟體註冊的動態連結庫 (轉)2007-12-05
- 給自己的軟體製作註冊碼2020-11-14
- Beyond Compare 1.9f註冊演算法&序號產生器 (8千字)2002-04-28演算法
- 怎樣成長為優秀的軟體架構師?2020-10-23架構
- 怎樣成為優秀的軟體模型設計者?2004-10-16模型
- winzip序號產生器 (1千字)2001-04-12
- 軟體工程--為什麼軟體開發方法論讓你覺得糟糕2020-10-29軟體工程
- win10如何執行序號產生器_win10怎麼執行序號產生器2020-08-28Win10
- 怎樣才能讓精益生產專案輔導取得理想效果?2023-03-28