原帖由 深圳永進(jìn)實業(yè) 發(fā)表* [& z l/ i6 Z' S+ C 破解了一晚上!都搞不定!
寫這個軟件的家伙,加密的還挺厲害!
給你個參考:
gearbox 2.0 減速器設(shè)計系統(tǒng)-------一個PB程序破解
軟件簡介:
Gearbox2.0是基于Windows2000開發(fā)的適用于圓柱齒輪減速器,、
圓錐齒輪減速器和蝸桿蝸輪減速器設(shè)計以及齒輪傳動機(jī)構(gòu)設(shè)計的輔助設(shè)計系統(tǒng),。
該系統(tǒng)包括速比分配、幾何參數(shù)計算,、強(qiáng)度計算,、精度查詢、結(jié)構(gòu)簡圖,、
數(shù)據(jù)輸出和參數(shù)化零件圖和裝配圖設(shè)計等子功能模塊,。本系統(tǒng)具有操作簡單、自動化程度高,、
靈活性等特點,,對機(jī)械行業(yè)生產(chǎn)廠家,,尤其是減速器生產(chǎn)廠家來說,是一個非常實用,、高效的設(shè)計軟件,。
前言:
前幾天下載了該軟件,一看是PB的,,從來沒碰過PB的,,我對PB的程序了解不多。只知道它
同VB程序差不多,都需要帶***VM60.DLL之類盔甲才能運行,。
破解過程:
1.用OD載入后,,運行,隨易輸入注冊碼: 1111-1111-1111-1111,,點注冊后會提示:
---------------------------
注冊碼錯誤
---------------------------
請輸入完整的注冊碼,!
---------------------------
確定
---------------------------
好,我就從這個消息框入手.
查看PBVM80.DLL這個函數(shù),,可發(fā)現(xiàn)函數(shù): fnMessageBox(PB就是用它顯示消息框的),。
對這個函數(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è)斷點,,從下面字符提示看,,好象是執(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。下面我們再點注冊按扭:
程序被攔截拉,,連續(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
---------------------------------------------
對019D00C4點右鍵“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 ................
注冊碼可能在上面字符串里,。
我們來對019D00C4下內(nèi)存斷點,看看能看到它的運算,。
好我們?nèi)∠懊?0C6CDE0斷點.
被攔截,,按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下斷點我們可看到許多信息:
C:\WINDOWS\System32\wadxz.dll --------------------一個隱藏文件,,記錄拉使用次數(shù)
HKEY_LOCAL_MACHINE\Software\Sunyick\gearbox\2004\sn-----機(jī)器碼
DFRTINYAGVLHWDFVYUBR------------注冊碼!!!!!
************************************************************************
PB的DLL搞的我暈頭轉(zhuǎn)向,很遺憾沒能找到算法.
另: 軟件數(shù)據(jù)庫gearbox.mdb中也保存了使用次數(shù),,安裝時間,注冊碼,。
兩處對比使用次數(shù),。(數(shù)據(jù)庫密碼:973710)
后記:我寫這篇破文目的是希望起拋磚引玉,,讓大家把破PB好方法展現(xiàn)出來,,讓我等菜鳥好好學(xué)習(xí)一下。
我找了一下論壇論壇精華,只一片是介紹破PB的,。
歡迎光臨 機(jī)械社區(qū) (http://giwivy.com.cn/) | Powered by Discuz! X3.4 |