原帖由 深圳永進(jìn)實(shí)業(yè) 發(fā)表- D6 a* \7 {. }8 {3 J& K% L
破解了一晚上!都搞不定! 寫這個(gè)軟件的家伙,加密的還挺厲害! 6 v; u: @2 R9 t8 R" j6 A7 [+ H
給你個(gè)參考:
7 Z; r1 j$ `* e1 ]) ?8 _" fgearbox 2.0 減速器設(shè)計(jì)系統(tǒng)-------一個(gè)PB程序破解
軟件簡(jiǎn)介: Gearbox2.0是基于Windows2000開發(fā)的適用于圓柱齒輪減速器,、 圓錐齒輪減速器和蝸桿蝸輪減速器設(shè)計(jì)以及齒輪傳動(dòng)機(jī)構(gòu)設(shè)計(jì)的輔助設(shè)計(jì)系統(tǒng),。 該系統(tǒng)包括速比分配、幾何參數(shù)計(jì)算,、強(qiáng)度計(jì)算,、精度查詢、結(jié)構(gòu)簡(jiǎn)圖,、 數(shù)據(jù)輸出和參數(shù)化零件圖和裝配圖設(shè)計(jì)等子功能模塊,。本系統(tǒng)具有操作簡(jiǎn)單、自動(dòng)化程度高,、 靈活性等特點(diǎn),,對(duì)機(jī)械行業(yè)生產(chǎn)廠家,尤其是減速器生產(chǎn)廠家來說,,是一個(gè)非常實(shí)用,、高效的設(shè)計(jì)軟件。
前言:
前幾天下載了該軟件,,一看是PB的,,從來沒碰過PB的,我對(duì)PB的程序了解不多,。只知道它
同VB程序差不多,都需要帶***VM60.DLL之類盔甲才能運(yùn)行,。
破解過程:
1.用OD載入后,運(yùn)行,,隨易輸入注冊(cè)碼: 1111-1111-1111-1111,,點(diǎn)注冊(cè)后會(huì)提示:
--------------------------- 注冊(cè)碼錯(cuò)誤 --------------------------- 請(qǐng)輸入完整的注冊(cè)碼! --------------------------- 確定 ---------------------------
好,,我就從這個(gè)消息框入手.
查看PBVM80.DLL這個(gè)函數(shù),,可發(fā)現(xiàn)函數(shù): fnMessageBox(PB就是用它顯示消息框的)。
對(duì)這個(gè)函數(shù)下斷,,被攔截后按CTRL+F9,按F8來到:
10C6D17B 85C0 TEST EAX,EAX 10C6D17D BD 05400080 MOV EBP,80004005 10C6D182 75 04 JNZ SHORT  BVM80.10C6D188 10C6D184 896C24 4C MOV DWORD  TR SS:[ESP+4C],EBP
向上看來到:
(在這里設(shè)斷點(diǎn),,從下面字符提示看,好象是執(zhí)行PB內(nèi)部函數(shù))
10C6CDE0 83EC 38 SUB ESP,38 10C6CDE3 53   USH EBX 10C6CDE4 55 PUSH EBP 10C6CDE5 56 PUSH ESI ..................... ...................... 10C6CE1C 74 10 JE SHORT PBVM80.10C6CE2E 10C6CE1E 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C] 10C6CE21 68 B00EDE10 PUSH PBVM80.10DE0EB0 ; ASCII
"OB_RUNTIME_CLASS::invoke" 10C6CE26 6A 20 PUSH 20 10C6CE28 52 PUSH EDX 10C6CE29 E8 42EEF3FF CALL PBVM80.sh_dbg_enter 10C6CE2E 8B07 MOV EAX,DWORD PTR DS:[EDI] ..................... ...................... 10C6CF3C 74 75 JE SHORT PBVM80.10C6CFB3 10C6CF3E 8B4424 50 MOV EAX,DWORD PTR SS:[ESP+50] 10C6CF42 85C0 TEST EAX,EAX 10C6CF44 B8 CC0EDE10 MOV EAX,PBVM80.10DE0ECC ; ASCII "Executing class
function" 10C6CF49 74 05 JE SHORT PBVM80.10C6CF50 10C6CF4B B8 E80EDE10 MOV EAX,PBVM80.10DE0EE8 ; ASCII "Executing object
function" 10C6CF50 8B5424 58 MOV EDX,DWORD PTR SS:[ESP+58] 10C6CF54 66:8B4F 04 MOV CX,WORD PTR DS:[EDI+4] 10C6CF58 52 PUSH EDX 10C6CF59 8B17 MOV EDX,DWORD PTR DS:[EDI] 10C6CF5B 51 PUSH ECX 10C6CF5C 52 PUSH EDX ..................... ...................... 10C6CFCF 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C] 10C6CFD2 52 PUSH EDX 10C6CFD3 E8 88E5F3FF CALL PBVM80.sh_dbg_set_this 10C6CFD8 68 040FDE10 PUSH PBVM80.10DE0F04 ; ASCII "Internal Error: We
should never be executing an OB_SYSTEM_FUNC_DEF" 10C6CFDD 6A 00 PUSH 0 10C6CFDF E8 8CE5F3FF CALL PBVM80._sh_dbg_out 10C6CFE4 83C4 08 ADD ESP,8 10C6CFE7 68 66080000 PUSH 866 10C6CFEC 68 480FDE10 PUSH PBVM80.10DE0F48 ; ASCII "obclass.cpp" 10C6CFF1 68 540FDE10 PUSH PBVM80.10DE0F54 ; ASCII "We should never be
executing an OB_SYSTEM_FUNC_DEF" 10C6CFF6 E8 D516F4FF CALL PBVM80.osAssert 10C6CFFB C74424 4C 420C04>MOV DWORD PTR SS:[ESP+4C],80040C42 10C6D003 E9 B2050000 JMP PBVM80.10C6D5BA 10C6D008 83F8 02 CMP EAX,2 10C6D00B 0F85 93000000 JNZ PBVM80.10C6D0A4 10C6D011 8B4424 50 MOV EAX,DWORD PTR SS:[ESP+50] 10C6D015 50 PUSH EAX 10C6D016 56 PUSH ESI 10C6D017 E8 34A80300 CALL PBVM80.ob_set_curr_rtinst_and_retur> 10C6D01C 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D020 85C9 TEST ECX,ECX 10C6D022 74 1D JE SHORT PBVM80.10C6D041 10C6D024 68 75080000 PUSH 875 10C6D029 68 880FDE10 PUSH PBVM80.10DE0F88 ; ASCII "obclass.cpp" 10C6D02E 8D5424 58 LEA EDX,DWORD PTR SS:[ESP+58] 10C6D032 6A 00 PUSH 0 10C6D034 52 PUSH EDX 10C6D035 E8 46920200 CALL PBVM80.10C96280 10C6D03A BF 01000000 MOV EDI,1 1..................... ...................... 10C6D0A7 0F85 0F010000 JNZ PBVM80.10C6D1BC 10C6D0AD 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D0B1 51 PUSH ECX 10C6D0B2 56 PUSH ESI 10C6D0B3 E8 98A70300 CALL PBVM80.ob_set_curr_rtinst_and_retur> 10C6D0B8 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D0BC 85C9 TEST ECX,ECX 10C6D0BE 74 1D JE SHORT PBVM80.10C6D0DD 10C6D0C0 68 A5080000 PUSH 8A5 10C6D0C5 68 940FDE10 PUSH PBVM80.10DE0F94 ; ASCII "obclass.cpp" 10C6D0CA 8D5424 58 LEA EDX,DWORD PTR SS:[ESP+58] 10C6D0CE 6A 00 PUSH 0 ..................... ...................... 10C6D11A E8 41E4F3FF CALL PBVM80.sh_dbg_set_this 10C6D11F 68 A00FDE10 PUSH PBVM80.10DE0FA0 ; ASCII "Executing system dll
function " 10C6D124 6A 1E PUSH 1E 10C6D126 E8 45E4F3FF CALL PBVM80._sh_dbg_out 10C6D12B 83C4 08 ADD ESP,8 10C6D12E 66:85ED TEST BP,BP
..................... ......................
2,。下面我們?cè)冱c(diǎn)注冊(cè)按扭:
程序被攔截拉,,連續(xù)按CTRL+F9幾下后我在堆棧中發(fā)現(xiàn):"11111111111111111111" --------------------------------------------- 0012EEE8 10CE6C50 RETURN to PBVM80.10CE6C50 0012EEEC 00ABFBF8 0012EEF0 086203C2 0012EEF4 00ABFBF8 0012EEF8 0012EF0C 0012EEFC 00000000 0012EF00 00000002 0012EF04 00ABFBF8 0012EF08 085D0F04 0012EF0C 019D00C4 ASCII "11111111111111111111" 0012EF10 00060D00 0012EF14 086616A4
---------------------------------------------
對(duì)019D00C4點(diǎn)右鍵“Follow in Dump”可看到:(注:我的機(jī)器碼是0505 - 7149 - 4199 - 3133 - 6666)
019D00C4 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111 019D00D4 31 31 31 31 00 34 39 00 00 00 00 00 37 31 34 39 1111.49.....7149 019D00E4 34 31 39 39 33 31 33 33 36 36 36 36 00 00 00 00 419931336666.... 019D00F4 3C 01 9D 01 31 31 31 31 31 31 31 31 31 31 31 31 <?111111111111 019D0104 31 31 31 31 00 00 00 00 F4 00 9D 01 49 4E 59 41 1111....??INYA 019D0114 47 56 4C 48 57 44 46 56 59 55 42 52 00 00 00 00 GVLHWDFVYUBR.... 019D0124 DC 00 9D 01 49 4E 59 41 47 56 4C 48 57 44 46 56 ??INYAGVLHWDFV 019D0134 59 55 42 52 00 00 00 00 24 01 9D 01 37 31 34 39 YUBR....$?7149 019D0144 34 31 39 39 33 31 33 33 36 36 36 36 00 00 00 00 419931336666.... 019D0154 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
注冊(cè)碼可能在上面字符串里。
我們來對(duì)019D00C4下內(nèi)存斷點(diǎn),,看看能看到它的運(yùn)算,。 好我們?nèi)∠懊?0C6CDE0斷點(diǎn).
被攔截,按CTRL+F9,,來到: 10D89268 8B8F C60000>MOV ECX,DWORD PTR DS:[EDI+C6] 10D8926E 50 PUSH EAX 10D8926F 51 PUSH ECX 10D89270 57 PUSH EDI 10D89271 E8 1A24EFFF CALL PBVM80.ob_get_const 10D89276 50 PUSH EAX 10D89277 53 PUSH EBX 10D89278 57 PUSH EDI 10D89279 E8 C2E4F3FF CALL PBVM80.ot_string_cat ;(很明顯是連接字符串函數(shù)) 10D8927E 8BF0 MOV ESI,EAX 10D89280 85F6 TEST ESI,ESI
在10D89279下斷點(diǎn)我們可看到許多信息:
C:\WINDOWS\System32\wadxz.dll --------------------一個(gè)隱藏文件,,記錄拉使用次數(shù) HKEY_LOCAL_MACHINE\Software\Sunyick\gearbox\2004\sn-----機(jī)器碼 DFRTINYAGVLHWDFVYUBR------------注冊(cè)碼!!!!!
************************************************************************ PB的DLL搞的我暈頭轉(zhuǎn)向,很遺憾沒能找到算法.
另: 軟件數(shù)據(jù)庫(kù)gearbox.mdb中也保存了使用次數(shù),安裝時(shí)間,,注冊(cè)碼,。 兩處對(duì)比使用次數(shù)。(數(shù)據(jù)庫(kù)密碼:973710)
后記:我寫這篇破文目的是希望起拋磚引玉,,讓大家把破PB好方法展現(xiàn)出來,,讓我等菜鳥好好學(xué)習(xí)一下,。 我找了一下論壇論壇精華,只一片是介紹破PB的。
|