*****管理專家 V1.05版破解實錄 ,敬請高手指點,謝謝!!! (12千字)
*****管理專家 V1.05版破解實錄
時 間:2002-10-10
破解物件:
***** V 1.05版
破解工具:Language、TRW2000_娃娃版、Keymake v1.73
破解原因:近日從 網上拉下一款工資管理類軟體,安裝後發現其功能一般般。看看它的註冊說明,哇噻,這東東竟敢索要1000大洋!這作者未免太那個了吧,俺就拿它來練練手,比破Crackme要強。
保護方式:序列號!
破 解 者:duhe(張湘平)
破解過程:
1、用Language偵測該軟體是用C語言編寫,並且無殼,很好!幹掉它。
2、執行TRW2000 v1.23,然後再執行*****管理專家,點選“幫助/註冊”選單,在註冊視窗內分別填入:
使用者碼:duhe
註冊碼:1111-2222-3333-4444
3、撥出TRW2000,下萬能斷點:bpx
hmemcpy,按F5鍵切換到“*****管理專家”介面,點選“完成註冊 ”按鈕。
……
怎麼回事?當機啦?晦氣!重來!
4、重啟機器後,重複前面的第2、3步驟。怎麼又當機了?!我靠!看樣子軟體作者運用反跟蹤技術(Anti-Debug)了,狡猾狡猾的。怎麼辦?當然用TRW2000_娃娃版啦!
5、從頭再來。點選“完成註冊 ”按鈕後,程式很快被攔截下來,下命令:pmoudle ,來到“*****管理專家”的領空,按二下(3下就會蹦出錯誤視窗)F12鍵和一次F10鍵,程式來到這裡:
015F:0043D970 55 PUSH
EBP
015F:0043D971 8BEC MOV
EBP,ESP
015F:0043D973 6AFF
PUSH BYTE -01
015F:0043D975 68D8E44400
PUSH DWORD 0044E4D8
015F:0043D97A 64A100000000
MOV EAX,[FS:00]
015F:0043D980 50
PUSH EAX
015F:0043D981 64892500000000
MOV [FS:00],ESP
015F:0043D988 83EC6C
SUB ESP,BYTE +6C
015F:0043D98B 53
PUSH EBX
015F:0043D98C
56 PUSH ESI
015F:0043D98D 57 PUSH
EDI
015F:0043D98E 8BD9 MOV
EBX,ECX
015F:0043D990 8965F0
MOV [EBP-10],ESP
015F:0043D993 6A01
PUSH BYTE +01
015F:0043D995 E8288E0000
CALL `MFC42!ord_000018BE`
015F:0043D99A 8D8390020000
LEA EAX,[EBX+0290] <---程式停在這裡
015F:0043D9A0 8D8B8C020000 LEA ECX,[EBX+028C]
015F:0043D9A6 50 PUSH
EAX
015F:0043D9A7 8D55E0 LEA
EDX,[EBP-20]
015F:0043D9AA 51
PUSH ECX
015F:0043D9AB 52
PUSH EDX
015F:0043D9AC E8AB8A0000
CALL `MFC42!ord_0000039A`
015F:0043D9B1 8D8B94020000
LEA ECX,[EBX+0294]
015F:0043D9B7 8D55E4
LEA EDX,[EBP-1C]
015F:0043D9BA
51 PUSH ECX
015F:0043D9BB 50 PUSH
EAX
015F:0043D9BC 52 PUSH
EDX
015F:0043D9BD C745FC00000000 MOV DWORD
[EBP-04],00
015F:0043D9C4 E8938A0000 CALL
`MFC42!ord_0000039A`
015F:0043D9C9 8D8B98020000 LEA
ECX,[EBX+0298]
015F:0043D9CF 8D55E8
LEA EDX,[EBP-18]
015F:0043D9D2 51
PUSH ECX
015F:0043D9D3 50
PUSH EAX
015F:0043D9D4
52 PUSH EDX
015F:0043D9D5 C645FC01 MOV BYTE
[EBP-04],01
015F:0043D9D9 E87E8A0000 CALL
`MFC42!ord_0000039A`
015F:0043D9DE 8D4DE4
LEA ECX,[EBP-1C]
015F:0043D9E1 C645FC04
MOV BYTE [EBP-04],04
015F:0043D9E5 E8E2890000
CALL `MFC42!ord_00000320`
015F:0043D9EA 8D4DE0
LEA ECX,[EBP-20]
015F:0043D9ED
C645FC03 MOV BYTE [EBP-04],03
015F:0043D9F1 E8D6890000 CALL `MFC42!ord_00000320`
015F:0043D9F6 A15C264600 MOV EAX,[0046265C]
015F:0043D9FB 8B0D60264600 MOV ECX,[00462660]
015F:0043DA01 8B1564264600 MOV EDX,[00462664]
015F:0043DA07 89459C MOV
[EBP-64],EAX
015F:0043DA0A A168264600 MOV
EAX,[00462668]
015F:0043DA0F 894DA0
MOV [EBP-60],ECX
015F:0043DA12 8A0D6C264600
MOV CL,[0046266C]
015F:0043DA18 8945A8
MOV [EBP-58],EAX
015F:0043DA1B A14C264600
MOV EAX,[0046264C]
015F:0043DA20 884DAC
MOV [EBP-54],CL
015F:0043DA23
8B0D50264600 MOV ECX,[00462650]
015F:0043DA29
89458C MOV [EBP-74],EAX
015F:0043DA2C A058264600 MOV AL,[00462658]
015F:0043DA31 894D90 MOV
[EBP-70],ECX
015F:0043DA34 8B0DA03C4600 MOV
ECX,[00463CA0]
015F:0043DA3A 8955A4 MOV
[EBP-5C],EDX 〈---ECX 指向我的使用者名稱:“duhe”
015F:0043DA3D 8B1548264600 MOV EDX,[00462648]
015F:0043DA43 884598 MOV
[EBP-68],AL
015F:0043DA46 8B41F8 MOV
EAX,[ECX-08]
015F:0043DA49 895588
MOV [EBP-78],EDX
015F:0043DA4C 8B1554264600
MOV EDX,[00462654]
015F:0043DA52 83F810
CMP EAX,BYTE +10
015F:0043DA55
895594 MOV [EBP-6C],EDX
015F:0043DA58 7E63 JNG
0043DABD
015F:0043DA5A 8D55DC LEA
EDX,[EBP-24]
015F:0043DA5D 6A10
PUSH BYTE +10
015F:0043DA5F 52
PUSH EDX
015F:0043DA60 B9A03C4600
MOV ECX,00463CA0
015F:0043DA65 E8E0890000
CALL `MFC42!ord_00001021`
015F:0043DA6A 8B00
MOV EAX,[EAX]
015F:0043DA6C
83C9FF OR ECX,BYTE -01
015F:0043DA6F 8BF8 MOV
EDI,EAX
015F:0043DA71 33C0 XOR
EAX,EAX
015F:0043DA73 F2AE
REPNE SCASB
015F:0043DA75 F7D1
NOT ECX
015F:0043DA77 2BF9
SUB EDI,ECX
015F:0043DA79 8D559C
LEA EDX,[EBP-64]
015F:0043DA7C
8BC1 MOV EAX,ECX
015F:0043DA7E 8BF7 MOV
ESI,EDI
015F:0043DA80 8BFA
MOV EDI,EDX
015F:0043DA82 C1E902
SHR ECX,02
015F:0043DA85 F3A5
REP MOVSD
015F:0043DA87 8BC8
MOV ECX,EAX
015F:0043DA89 83E103
AND ECX,BYTE +03
015F:0043DA8C
F3A4 REP MOVSB
015F:0043DA8E 8D4DDC
LEA ECX,[EBP-24]
015F:0043DA91
E836890000 CALL `MFC42!ord_00000320`
015F:0043DA96
8B0DA03C4600 MOV ECX,[00463CA0]
015F:0043DA9C
33C0 XOR EAX,EAX
015F:0043DA9E 8B51F8 MOV
EDX,[ECX-08]
015F:0043DAA1 83C2F0 ADD
EDX,BYTE -10
015F:0043DAA4 85D2
TEST EDX,EDX
015F:0043DAA6 7E42
JNG 0043DAEA
015F:0043DAA8 8A540110
MOV DL,[ECX+EAX+10]
015F:0043DAAC
0054059C ADD [EBP+EAX-64],DL
015F:0043DAB0 8B51F8 MOV
EDX,[ECX-08]
015F:0043DAB3 40
INC EAX
015F:0043DAB4 83C2F0
ADD EDX,BYTE -10
015F:0043DAB7 3BC2
CMP EAX,EDX
015F:0043DAB9
7CED JL 0043DAA8
015F:0043DABB EB2D JMP
SHORT 0043DAEA
015F:0043DABD 50
PUSH EAX
015F:0043DABE B9A03C4600
MOV ECX,00463CA0
015F:0043DAC3 E822890000
CALL `MFC42!ord_00000B63`
015F:0043DAC8 8BF8
MOV EDI,EAX
〈---EAX 指向我的使用者名稱:“duhe”
015F:0043DACA 83C9FF
OR ECX,BYTE -01
015F:0043DACD 33C0
XOR EAX,EAX
015F:0043DACF
8D559C LEA EDX,[EBP-64]
015F:0043DAD2 F2AE REPNE SCASB
015F:0043DAD4 F7D1 NOT
ECX
015F:0043DAD6 2BF9 SUB
EDI,ECX
015F:0043DAD8 8BC1
MOV EAX,ECX 〈---EDI指向我的使用者名稱:“duhe”
015F:0043DADA 8BF7 MOV
ESI,EDI
015F:0043DADC 8BFA
MOV EDI,EDX 〈---ESI指向我的使用者名稱:“duhe”
015F:0043DADE C1E902 SHR
ECX,02
015F:0043DAE1 F3A5 REP MOVSD
015F:0043DAE3 8BC8 MOV
ECX,EAX 〈---EDX 指向我的使用者名稱:“duhe”
015F:0043DAE5 83E103
AND ECX,BYTE +03
015F:0043DAE8
F3A4 REP MOVSB
015F:0043DAEA 33C9
XOR ECX,ECX
〈---EDX 指向我的使用者名稱:“duhe”
015F:0043DAEC 8A440D9C
MOV AL,[EBP+ECX-64] ←――――――
015F:0043DAF0
84C0 TEST AL,AL
|
015F:0043DAF2 7D06 JNL
0043DAFA
|
015F:0043DAF4 F6D8
NEG AL
|
015F:0043DAF6 88440D9C
MOV [EBP+ECX-64],AL
|
015F:0043DAFA 0FBE440D88
MOVSX EAX,BYTE [EBP+ECX-78]
015F:0043DAFF 0FBE540D9C MOVSX
EDX,BYTE [EBP+ECX-64] 計
015F:0043DB04
0BC2 OR EAX,EDX
算
015F:0043DB06 BE1A000000 MOV
ESI,1A
注
015F:0043DB0B 99
CDQ
冊
015F:0043DB0C F7FE IDIV
ESI
碼
015F:0043DB0E 80C241
ADD DL,41
015F:0043DB11 88540D9C
MOV [EBP+ECX-64],DL
|
015F:0043DB15 41
INC ECX
|
015F:0043DB16 83F910 CMP
ECX,BYTE +10
|
015F:0043DB19 7CD1 JL
0043DAEC ←――――――
015F:0043DB1B
8D459C LEA EAX,[EBP-64]
015F:0043DB1E 8D4DEC LEA
ECX,[EBP-14] <---EAX指向真註冊碼
015F:0043DB21 50 PUSH
EAX
015F:0043DB22 E8C9880000 CALL
`MFC42!ord_00000219` <---EAX指向真註冊碼
015F:0043DB27 8B75EC
MOV ESI,[EBP-14]
015F:0043DB2A
8B45E8 MOV EAX,[EBP-18]
015F:0043DB2D C645FC05 MOV
BYTE [EBP-04],05
015F:0043DB31 8A10
MOV DL,[EAX]
015F:0043DB33 8ACA
MOV CL,DL
015F:0043DB35 3A16
CMP DL,[ESI]
015F:0043DB37
751C JNZ 0043DB55
015F:0043DB39 84C9 TEST
CL,CL
015F:0043DB3B 7414 JZ
0043DB51
015F:0043DB3D 8A5001
MOV DL,[EAX+01]
015F:0043DB40 8ACA
MOV CL,DL
015F:0043DB42 3A5601
CMP DL,[ESI+01]
015F:0043DB45
750E JNZ 0043DB55
015F:0043DB47 83C002 ADD
EAX,BYTE +02
015F:0043DB4A 83C602 ADD
ESI,BYTE +02
015F:0043DB4D 84C9
TEST CL,CL
015F:0043DB4F 75E0
JNZ 0043DB31
015F:0043DB51 33C0
XOR EAX,EAX
015F:0043DB53
EB05 JMP SHORT 0043DB5A
015F:0043DB55 1BC0 SBB
EAX,EAX
015F:0043DB57 83D8FF SBB
EAX,BYTE -01
015F:0043DB5A 85C0
TEST EAX,EAX
015F:0043DB5C 743F
JZ 0043DB9D
<---此處跳轉就能成功註冊
015F:0043DB5E 6A00
PUSH BYTE +00
015F:0043DB60 68B4364600
PUSH DWORD 004636B4
015F:0043DB65 6894364600
PUSH DWORD 00463694
015F:0043DB6A 8BCB
MOV ECX,EBX
015F:0043DB6C
E8398C0000 CALL `MFC42!ord_00001080`
<---call出出錯視窗
015F:0043DB71 8D4DEC LEA
ECX,[EBP-14]
015F:0043DB74 C645FC03
MOV BYTE [EBP-04],03
015F:0043DB78 E84F880000
CALL `MFC42!ord_00000320`
015F:0043DB7D 8D4DE8
LEA ECX,[EBP-18]
015F:0043DB80
C745FCFFFFFFFF MOV DWORD [EBP-04],FFFFFFFF
015F:0043DB87
E840880000 CALL `MFC42!ord_00000320`
015F:0043DB8C
8B4DF4 MOV ECX,[EBP-0C]
015F:0043DB8F 5F POP
EDI
015F:0043DB90 5E
POP ESI
015F:0043DB91 64890D00000000 MOV
[FS:00],ECX
015F:0043DB98 5B
POP EBX
015F:0043DB99 8BE5
MOV ESP,EBP
015F:0043DB9B
5D POP EBP
當我們來到0043DB22處,D EAX就能瞧見我們的註冊碼(當然是真的啦)。再往下繼續走,發現0043DB6C
E8398C0000 CALL `MFC42!ord_00001080` 是call出出錯視窗的地方,我們回過頭往前看,在其不遠處恰巧有一跳轉,能夠跳過這個該死的call
,據此我們可以肯定地判斷:這個跳轉就是關鍵的一跳。
6、好了,現在關鍵的地方已經找到,那麼我們應該如何處置它呢?辦法當然有多個,即要麼爆破,要麼用Keymake做出它的序號產生器:
⑴、爆破:
從上面的分析中我們得知,在0043DB5C 743F JZ
0043DB9D 處只要反跳就能成功註冊,所以,我們將跳轉命令JZ改成JNZ ,即將機器碼743F 改成753F 就行。因此我們先備份該軟體的主檔案,再用16進位制編輯工具(如UltraEdit)把0043DB5C
743F JZ 0043DB9D 改成0043DB5C 743F JNZ 0043DB9D ,也即將將機器碼743F
改成753F,然後存檔退出,修改後的程式,註冊時我們隨意填寫註冊碼(當然是假的哦)均可成功註冊。
非常有趣的是,只要當你跳過
0043DB6C E8398C0000 CALL `MFC42!ord_00001080` (call出出錯視窗),不但能夠讓你成功註冊,而且它還自動地將正確的註冊碼填入註冊碼的視窗中!
⑵、做記憶體序號產生器:
首先我們得感謝劉建英為我等Cracker打造了一個巨酷的工具軟體:Keymake。執行Keymake
V1.73
我們知道當程式執行到在0043DB22 E8C9880000 CALL `MFC42!ord_00000219`
處,D EAX就可在TRW2000的資料視窗內瞧見你所需要的真註冊碼,因此我們點選Keymake 選單:“其他/記憶體序號產生器”,在中斷地址列表中填上如下內容:
中斷地址:43Db22
次 數:1
指 令:E8
長 度:5
注 冊 碼:記憶體方式--->EAX
然後點選“生成”按鈕即可生成我們需要的記憶體序號產生器了。
當你註冊成功後,軟體會在下列地方做些改動:
㈠、在登錄檔中增加如下鍵值:
[HKEY_USERS\.DEFAULT\Software\爬山虎軟體工作室\爬山虎工資管理專家\Options]
"zcm"="HVTH-TLBP-XHBK-DGYT"
"dwmc"="duhe"
㈡、在其資料庫檔案(GZ.mdb)中填入你的註冊碼相關資訊。
問題:
由於本人太菜而看不懂上面的演算法。如果我要用Keymake做個它的演算法序號產生器,請問各位高手,我該如何編寫它的rek
檔案呢?
先謝了!
相關文章
- B-Puzzle Version 5.0破解過程,請高手指點,謝謝!★強烈向初學破解者推薦★ (2千字)2001-11-25
- CTris 2000 Version2.0 破解過程,,請高手指點,謝謝!★強烈向初學破解者推薦★
(2千字)2001-11-25
- 此介面的實現物件是哪個?高手指點,謝謝!2005-12-27物件
- 請benq大哥說得明白點,謝謝2007-09-30ENQ
- Tomcat服務問題,Cpu100%,急需幫助,請高手指點,謝謝!!!2004-05-19Tomcat
- 請求幫助!謝謝!2004-04-07
- Struts+Hibernate+Spring出現異常錯誤,高手指點,謝謝!2005-12-01Spring
- 關於軟體外包專案管理的幾點體會(本文版權歸吳兵本人所有,謝絕轉載!謝謝!)2010-12-29專案管理
- 關於jive的幾個小問題,請高手指點,多謝先。2005-10-19
- VOPTME6.01破解第一次寫教程,有不對的地方請指出,謝謝! (3千字)2001-05-24
- benq大哥,幫忙,請進入,謝謝!2006-05-18ENQ
- 美萍反黃專家 版本2.41 破解實錄 (9千字)2001-10-04
- 美萍反黃專家 版本3.2破解實錄 (6千字)2001-12-08
- 請教MySql_JDBC載入失敗?謝謝!!2004-08-08MySqlJDBC
- 請幫我看看呼叫webservice的問題謝謝!2005-04-26Web
- 請教關於jive原始碼,請各位高手幫忙 ,謝謝!!!2003-07-04原始碼
- 編譯第四章程式的錯誤,請指點,謝謝!2004-10-27編譯
- 向各位大哥請教:web專案的開發環境如何搭建?謝謝!!!2006-05-16Web開發環境
- 我是初學者,請老師指點我該怎麼學JAVA,謝謝啦2007-12-05Java
- 我想破解象棋橋這個軟體,請各位大俠給點提示好嗎?謝謝(內有下載地址)
(51字)2000-08-11
- 請教cmp實體bean得事務超時時間設定,謝謝2005-05-20Bean
- 請問如何用多執行緒實現一個輪詢功能?謝謝!2005-04-15執行緒
- 請問這個報錯該怎麼解決,謝謝2020-12-18
- 請教彭老師關於jdbc的問題,謝謝!2010-07-16JDBC
- 請教tomcat連線sqlserver的問題!!謝謝各位!2004-10-29TomcatSQLServer
- jive配置中的database問題?!請幫忙阿謝謝!2003-01-02Database
- 網咖管理專家9.5破解手記 (6千字)2001-01-26
- 請問各位大俠如何Oralce資料庫上安裝??謝謝!2003-09-15資料庫
- 請問工廠模式到底怎麼用?用在什麼地方?謝謝!2002-09-07模式
- activemq的問題,謝謝2007-05-08MQ
- 《 ACDSEE 2.3 》的另類註冊碼破解 高手請看最後的問題(謝了)!!! (5千字)2001-05-26
- Jdon版jive安裝過程中,mysql資料庫連線出錯!(請幫幫忙,謝謝!)2005-12-31MySql資料庫
- 文件模型新增的時間欄位無法插入資料庫,請大神指點迷津,謝謝了!2020-04-04模型資料庫
- 如何在EJB中獲得資料庫欄位的長度?(不是jdbc)請大家指點謝謝2004-06-25資料庫JDBC
- TPM管理專案6步法,拿走不謝!2023-03-01
- 請教問題:jive1.2.4資料庫連線問題,謝謝2003-11-11資料庫
- 請問哪裡有關於java播放Flash的例子啊?謝謝了2003-10-13Java
- 請問網頁可以打包成exe可執行檔案嗎?謝謝2003-05-07網頁