Delphi學習寶典1.2版的破解(vb版)
標 題:Delphi學習寶典1.2版的破解(vb版)
發信人:mejy
時 間:2003年11月02日 08:36
詳細資訊:
Delphi學習寶典1.2版的破解(vb版)
軟體簡介:Delphi是全新的視覺化程式設計環境,為我們提供了一種方便、快捷的Windows應用程式開發工具。它使用了Microsoft Windows圖形使用者介面的許多先進特性和設計思想,採用了彈性可重複利用的完整的物件導向程式語言(Object-Oriented Language)、當今世界上最快的編輯器、最為領先的資料庫技術。對於廣大的程式開發人員來講,使用Delphi開發應用軟體,無疑會大大地提高程式設計效率,而且隨著應用的深入,您將會發現程式設計不再是枯燥無味的工作――Delphi的每一個設計細節,都將帶給您一份欣喜。
破解宣告:只為技術而破解!
最近心血來潮,找了些vb的咚咚,發現有的也不是很難得,這個軟體的這個註冊碼演算法很簡單,嚷大俠見笑了,需要重啟驗證!
笨辦法:當檢測重啟驗證的時候,不行就用萬能斷點,雖然慢點,但一般都能發現目標
受fly兄登錄檔終結者的啟發在MSVBVM60.rtcMidCharBstr是破解vb程式的一個很有效的斷點!在004221FA處設斷,他的作用是從字串的位置i上得到相應的字元。
註冊演算法的開始
004221D3 > 66:3BB5 1CFFFF>CMP SI,WORD PTR SS:[EBP-E4]
004221DA . 0F8F 94000000 JG Delphi學.00422274[
004221E0 . 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
004221E3 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
004221E6 . 0FBFCE MOVSX ECX,SI
004221E9 . 50 PUSH EAX
004221EA . 51 PUSH ECX
004221EB . 52 PUSH EDX
004221EC . C745 BC 010000>MOV DWORD PTR SS:[EBP-44],1
004221F3 . C745 B4 020000>MOV DWORD PTR SS:[EBP-4C],2
004221FA . FF15 80104000 CALL DWORD PTR DS:[<&MSVBVM60.#631>] ; MSVBVM60.rtcMidCharBstr
//設斷
00422200 . 50 PUSH EAX
00422201 . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
00422204 . 50 PUSH EAX
00422205 . 6A 01 PUSH 1
00422207 . FF15 E8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLsetFixstrFree>>; MSVBVM60.__vbaLsetFixstrFree
0042220D . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]
00422210 . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00422216 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00422219 . 51 PUSH ECX
0042221A . 6A 01 PUSH 1
0042221C . FF15 74104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrFixstr>] ; MSVBVM60.__vbaStrFixstr
00422222 . 8BD0 MOV EDX,EAX
00422224 . 8D4D C8 LEA ECX,DWORD PTR SS:[EBP-38]
00422227 . FF15 60114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
0042222D . 50 PUSH EAX
0042222E . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
00422234 . 8B55 C8 MOV EDX,DWORD PTR SS:[EBP-38]
00422237 . 52 PUSH EDX
00422238 . 8BD8 MOV EBX,EAX
0042223A . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0042223D . 50 PUSH EAX
0042223E . 6A 01 PUSH 1
00422240 . FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLsetFixstr>] ; MSVBVM60.__vbaLsetFixstr
00422246 . 0FBFCB MOVSX ECX,BX
00422249 . 03CF ADD ECX,EDI
0042224B . 0F80 92030000 JO Delphi學.004225E3
00422251 . 8BF9 MOV EDI,ECX
00422253 . 8D4D C8 LEA ECX,DWORD PTR SS:[EBP-38]
00422256 . FF15 80114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0042225C . 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
0042225F . B8 01000000 MOV EAX,1
00422264 . 66:03C6 ADD AX,SI
00422267 . 0F80 76030000 JO Delphi學.004225E3 //當使用者名稱取完後,跳出
0042226D . 8BF0 MOV ESI,EAX
0042226F .^E9 5FFFFFFF JMP Delphi學.004221D3
//以上的作用是取使用者名稱的相應字元的ascii碼累加,存入eax中,並轉入edi
例如mejy ----'m'+'e'+'j'+'y'==1b5
00422274 > 8B13 MOV EDX,DWORD PTR DS:[EBX]
00422276 . 69FF 87D61200 IMUL EDI,EDI,12D687 乘法將使用者名稱ascii碼的累加結果
與12d687(十六進位制)相乘,結果存入edi中
這就是註冊碼的演算法了,很簡單!(他的十進位制就是他的註冊碼)
0042227C . 0F80 61030000 JO Delphi學.004225E3
00422282 . 53 PUSH EBX
00422283 . 897D CC MOV DWORD PTR SS:[EBP-34],EDI
00422286 . FF92 00030000 CALL DWORD PTR DS:[EDX+300]
0042228C 8B3D 5C104000 MOV EDI,DWORD PTR
DS:[<&MSVBVM60.__vbaObjSet>] ; MSVBVM60.__vbaObjSet
00422292 . 50 PUSH EAX
00422293 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
00422296 . 50 PUSH EAX
00422297 . FFD7 CALL EDI
; <&MSVBVM60.__vbaObjSet>
00422299 . 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
0042229C . 8BF0 MOV ESI,EAX
0042229E . 8B0E MOV ECX,DWORD PTR DS:[ESI]
004222A0 . 52 PUSH EDX
004222A1 . 56 PUSH ESI
004222A2 . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
004222A8 . DBE2 FCLEX
004222AA . 85C0 TEST EAX,EAX
004222AC . 7D 12 JGE SHORT Delphi學.004222C0
004222AE . 68 A0000000 PUSH 0A0
004222B3 . 68 C0874000 PUSH Delphi學.004087C0
004222B8 . 56 PUSH ESI
004222B9 . 50 PUSH EAX
004222BA . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004222C0 > DB45 CC FILD DWORD PTR SS:[EBP-34] //經過浮點運算得到上面結果的,十進位制
004222C3 . 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]
//輸入的假序列號入棧
004222C6 . 50 PUSH EAX
004222C7 . DD9D 08FFFFFF FSTP QWORD PTR SS:[EBP-F8]
//此時能看見正確序列號的浮點數形式
004222CD . FF15 00114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
//將字串轉化為雙精度型
004222D3 . DC9D 08FFFFFF FCOMP QWORD PTR SS:[EBP-F8]
//假序列號的浮點數形式
004222D9 . DFE0 FSTSW AX
004222DB . F6C4 40 TEST AH,40 //比較語句
004222DE 74 07 JE SHORT Delphi學.004222E7 //關鍵跳轉 爆破點1
004222E0 . B8 01000000 MOV EAX,1
004222E5 . EB 02 JMP SHORT Delphi學.004222E9
004222E7 > 33C0 XOR EAX,EAX
004222E9 > F7D8 NEG EAX
004222EB . 8D4D C8 LEA ECX,DWORD PTR SS:[EBP-38]
004222EE . 8BF0 MOV ESI,EAX
004222F0 . FF15 80114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>]
; MSVBVM60.__vbaFreeStr
004222F6 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
004222F9 . FF15 7C114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObj>]
; MSVBVM60.__vbaFreeObj
004222FF . 66:85F6 TEST SI,SI
00422302 . 0F84 C3010000 JE Delphi學.004224CB
以下是程式啟動時驗證註冊碼的部分,先從登錄檔中讀出使用者名稱(當然先要成功註冊即要修改上面的爆破點1)
0041430B > 66:3B75 94 CMP SI,WORD PTR SS:[EBP-6C]
0041430F . 0F8F 8F000000 JG Delphi學.004143A4[
00414315 . 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
00414318 . 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
0041431B . 0FBFCE MOVSX ECX,SI
0041431E . 50 PUSH EAX
0041431F . 51 PUSH ECX
00414320 . 52 PUSH EDX
00414321 . C745 D0 010000>MOV DWORD PTR SS:[EBP-30],1
00414328 . C745 C8 020000>MOV DWORD PTR SS:[EBP-38],2
0041432F . FF15 80104000 CALL DWORD PTR DS:[<&MSVBVM60.#631>] ; MSVBVM60.rtcMidCharBstr
00414335 . 50 PUSH EAX
00414336 . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00414339 . 50 PUSH EAX
0041433A . 6A 01 PUSH 1
0041433C . FF15 E8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLsetF>; MSVBVM60.__vbaLsetFixstrFree
00414342 . 8D4D C8 LEA ECX,DWORD PTR SS:[EBP-38]
00414345 . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
0041434B . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0041434E . 51 PUSH ECX
0041434F . 6A 01 PUSH 1
00414351 . FF15 74104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrFi>; MSVBVM60.__vbaStrFixstr
00414357 . 8BD0 MOV EDX,EAX
00414359 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
0041435C . FFD3 CALL EBX
0041435E . 50 PUSH EAX
0041435F . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
00414365 . 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
00414368 . 52 PUSH EDX
00414369 . 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
0041436C . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0041436F . 50 PUSH EAX
00414370 . 6A 01 PUSH 1
00414372 . FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLsetF>; MSVBVM60.__vbaLsetFixstr
00414378 . 0FBF4D A4 MOVSX ECX,WORD PTR SS:[EBP-5C]
0041437C . 03CF ADD ECX,EDI
0041437E . 0F80 7F020000 JO Delphi學.00414603
00414384 . 8BF9 MOV EDI,ECX
00414386 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
00414389 . FF15 80114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
0041438F . B8 01000000 MOV EAX,1
00414394 . 66:03C6 ADD AX,SI
00414397 . 0F80 66020000 JO Delphi學.00414603
0041439D . 8BF0 MOV ESI,EAX
0041439F .^E9 67FFFFFF JMP Delphi學.0041430B 和上面的演算法一樣
004143A4 > 8B75 E0 MOV ESI,DWORD PTR SS:[EBP-20]
004143A7 . 69FF 87D61200 IMUL EDI,EDI,12D687
004143AD . 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
004143B0 . 0F80 4D020000 JO Delphi學.00414603S
004143B6 . 33D2 XOR EDX,EDX
004143B8 . 3BF7 CMP ESI,EDI
004143BA . 0F95C2 SETNE DL
004143BD . 50 PUSH EAX
004143BE . 68 80684000 PUSH Delphi學.00406880
004143C3 . 4A DEC EDX
004143C4 . 66:8915 484042>MOV WORD PTR DS:[424048],DX
004143CB . FF15 94104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
004143D1 . 85C0 TEST EAX,EAX
004143D3 . 74 04 JE SHORT Delphi學.004143D9
004143D5 . 85F6 TEST ESI,ESI
004143D7 . 75 09 JNZ SHORT Delphi學.004143E2
004143D9 > 66:C705 484042>MOV WORD PTR DS:[424048],0
004143E2 > 66:833D 484042>CMP WORD PTR DS:[424048],0
004143EA 0F84 55010000 JE Delphi學.004145454 此處為關鍵跳轉,爆破點2
004143F0 . A1 10404200 MOV EAX,DWORD PTR DS:[424010]
004143F5 . 85C0 TEST EAX,EAX
004143F7 . 75 10 JNZ SHORT Delphi學.00414409
004143F9 . 68 10404200 PUSH Delphi學.004240101
004143FE . 68 48384000 PUSH Delphi學.004038481
00414403 . FF15 08114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>>; MSVBVM60.__vbaNew2
00414409 > 8B35 10404200 MOV ESI,DWORD PTR DS:[424010]
0041440F . 8B0E MOV ECX,DWORD PTR DS:[ESI]
00414411 . 6A 0B PUSH 0B
00414413 . 56 PUSH ESI
更改上述兩個爆破點後,可使其成為註冊辦,但還是有功能限制,這需要繼續跟蹤,在每個功能限制的地方,改掉關鍵跳轉就能解除限制,這兒我就不跟蹤下去了,因為畢竟註冊碼演算法已找到。有興趣可以做作 ! :)
寫完了呵呵!
註冊資訊儲存在hkey_CURRent_USERSOFTWAREVB AND VBA program SETtingsDelphi學習寶典資訊下面。。刪掉key的鍵值可重新註冊!
目的是增強大家破解vb的信心!讓大家笑話了!
一個可用的註冊碼:mejy-------539505779
vc下的序號產生器:
char h[15],ch;
int i=0;
m_zcm=0;
UpdateData(TRUE);
strcpy(h,m_yhm);
while(h[i]!=' ')
{
ch=int(h[i]);
m_zcm+=ch;
i++;
}
m_zcm*=1234567;
UpdateData(FALSE);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
----------------******---------------
--------------"歡迎交流"------------------
----------------******---------------
【BCG】【FCG】【DFCG】【NUKE】【IPB】
-----------學習、學習、在練習----------
相關文章
- 前端學習文件寶典2018-12-15前端
- VB真是想不到系列之四:VB指標葵花寶典之SafeArray (轉)2007-12-12指標
- Linux寶典(第9版)2018-10-30Linux
- JAVA葵花寶典(基礎版)2020-12-20Java
- SCO UNIX學習寶典 高階進階(轉)2007-08-11
- SCO UNIX學習寶典(基本配置及操作)(轉)2007-08-10
- SCO UNIX學習寶典(系統安裝)(轉)2007-08-16
- VB真是想不到系列之三:VB指標葵花寶典之函式指標 (轉)2008-05-28指標函式
- SCO UNIX學習寶典(機器啟動的認識)(轉)2007-08-12
- Java面試寶典2010版2012-04-12Java面試
- Delphi Unicode學習2013-09-06Unicode
- vb學習筆記2015-05-01筆記
- 面試寶典2017-12-13面試
- PC掌中寶的破解2015-11-15
- 程式設計師必看,這本深度學習寶典刷爆IT圈!2020-04-04程式設計師深度學習
- Delphi7企業原版_史上最經典的delphi 版本2012-12-12
- 利用VB的函式快速破解VB程式! (2千字)2001-11-03函式
- 移動開發者的自學寶典:十大線上程式設計學習網站2013-12-05移動開發程式設計學習網站
- 大資料架構師從入門到精通 學習必看寶典2019-12-17大資料架構
- Java 面試寶典2018-09-09Java面試
- PHP面試寶典2017-06-07PHP面試
- iOS 面試寶典2017-12-21iOS面試
- 網易有道詞典電腦版破解版 v8.9.6.0綠色版2020-12-22
- IT技術跳槽的葵花寶典2019-02-19
- 經典比賽濃縮成書:阿里雲天池釋出深度學習實戰技術寶典2021-10-28阿里深度學習
- PostgreSQL學習的九層寶塔2019-11-07SQL
- Spring葵花寶典2020-07-24Spring
- C++面試寶典2018-09-11C++面試
- FAQ寶典之RancherServer2017-11-12Server
- Java面試葵花寶典2013-11-25Java面試
- Java面試寶典 Beta5.0版 (2018年最新公測版)2018-01-19Java面試
- 談談VB程式的破解 (5千字)2002-10-28
- 用VB“破解”有時間限制的程式 (轉)2007-12-04
- Delphi5學習筆記之五2007-05-05筆記
- Delphi5學習筆記之四2007-04-03筆記
- Delphi5學習筆記之三2007-03-01筆記
- iStylePDF vb版示例2014-08-04
- 黑客攻防技術寶典:Web實戰篇(第2版)與第1版的區別2012-06-19黑客Web