我的破解之路――BBOY
1.Win2000破解過程(第一次成功地破解) 2000-7-15
首先用Trw2000下斷點bpx getdlgitemtexta
一共會有五次,因為有五個輸入框
執行完五次getdlgitemtexta後,會有一個call,跟蹤進去
----------------------------------------------------
......
......
0187:0140EC66 TEST EAX,EAX
0187:0140EC68 JZ 0140EC84 ------錯誤的地址(使用r
eip改正地址)
----------------------------------------------------
0187:0140EC6A MOV EAX,[01428064]
0187:0140EC6F CMP EAX,EDI
0187:0140EC71 JZ 0140EC8D ------正確的地址
0187:0140EC73 MOV ECX,[0142BA18]
0187:0140EC79 CMP ECX,[EBP+18]
0187:0140EC7C JZ 0140EC8D ------正確的地址(使用r
eip改正地址)
----------------------------------------------------
執行此段的話就會跳轉到錯誤的地址
0187:0140EC7E MOV [0142B934],EBX
0187:0140EC84 XOR EAX,EAX
0187:0140EC86 POP EDI
0187:0140EC87 POP ESI
0187:0140EC88 POP EBX
0187:0140EC89 LEAVE
0187:0140EC8A RET 14
-----------------------------------------------------
0187:0140EC8D ...... 正確的地址
後記:
Win2000的加密很有意思,它的註冊碼計算在一個子程式中。如果不正確,子程式就正常的退出;如果正確就跳轉到正確的程式碼區執行程式。
2.Hex Workshop2.10破解過程 2000-7-17
首先輸入註冊碼 87654321
用Trw2000下斷點bpx getwindowtexta
中斷後用指令pmodule返回
-----------------------------------------------------
0187:00441F5E CALL `USER32!GetWindowTextA`
0187:00441F64 PUSH BYTE -01
0187:00441F66 MOV ECX,EDI
0187:00441F68 CALL 00434F8B 獲得註冊碼長度
0187:00441F6D JMP SHORT 00441F7B
不斷地按F8(很長的一段時間)
-----------------------------------------------------
0187:00416367 MOV [EBP-10],EAX
0187:0041636A CMP DWORD [EBP-10],BYTE +00
跳向錯誤的地址:
0187:0041636E JZ NEAR 004163ED 使用r
eip改正
-----------------------------------------------------
0187:00416374 MOV ECX,[EBP+FFFFFF2C]
0187:0041637A ADD ECX,BYTE +5C
0187:0041637D CALL 00404760
0187:00416382 PUSH EAX
0187:00416383 MOV EAX,[EBP+FFFFFF2C]
0187:00416389 MOV EAX,[EAX+68]
0187:0041638C ADD EAX,BYTE +02
0187:0041638F PUSH EAX
0187:00416390 CALL 00428888
0187:00416395 ADD ESP,BYTE +08
--------------------------------------------------------
後記:
這個軟體很奇怪,執行時總是跳來跳去,估計是經過加密了的。在註冊後,程式所在的資料夾中生成一個HEXWORKS.REG的檔案。
3.打字高手2.01破解過程 2000-7-19
首先輸入註冊碼 87654321
用Trw2000下斷點bpx hmemcpy (getwindowtexta和getdlgitemtexta無效)
中斷後用指令pmodule返回
s 0030:0,ffffffff '87654321'
得到輸入的註冊碼地址 xxxxxxxx
bpm xxxxxxxx rw
g
程式中斷在:
--------------------------------------------------------
0187:00403FFD ADD EDX,EAX
0187:00403FFF PUSH EDX
0187:00404000 SHR EDX,02
0187:00404003 JZ 0040402B
--------------------------------------------------------
前四個位元組比較:
0187:00404005 MOV ECX,[ESI]
0187:00404007 MOV EBX,[EDI]
0187:00404009 CMP ECX,EBX
0187:0040400B JNZ 00404065 錯誤的地址
--------------------------------------------------------
後四個位元組比較:
0187:0040400D DEC EDX
0187:0040400E JZ 00404025
0187:00404010 MOV ECX,[ESI+04]
0187:00404013 MOV EBX,[EDI+04]
0187:00404016 CMP ECX,EBX
0187:00404018 JNZ 00404065 錯誤的地址
---------------------------------------------------------
只要d edi就可以看都註冊碼79826002了(由此可見直接比較註冊碼的方式十分的不可靠)
後記:這個軟體是垃圾,第一次使用後我就把它給刪除了