WINZIP8.0(FileVersion:13.0 32bit) Winzip32.EXE 1,393KB
發信人:WINZIP8.0(FileVersion:13.0 32bit) Winzip32.EXE 1,393KB
發信人:井風
時 間:2000-11-21
詳細資訊:
軟體名稱:WINZIP8.0(FileVersion:13.0 32bit) Winzip32.EXE 1,393KB
下載地點:http://cycycycy.yeah.net (已經漢化,附註冊碼)
發 信 人: 井風
時 間: 2000-11-21
破解工具:Trw20001.22
難 度:易
前 言:
應幾位網友的請求,本人特寫下這篇文章。其目的不是單單為破解此軟體,意義在於拋磚
引玉,讓初學者理解破解的基本思路。本文具有一定的普遍性,過程講解儘可能詳細,即使是
未接觸過破解的人也能按步聚找出註冊碼,掌握一套普遍適用的方法。本文歡迎轉載,但務必
請保留原文完整性。
本人再次呼籲!每個能人志士積極行動起來,拿出自已的經驗和技術,積極參與交流活動,
為提高我國計算機技術水平貢獻一份力量。鳴謝!廣大為網友提供技術和經驗的高手、為大家
建設網站提供交流點的站長們。
詳細過程:
一、 執行TRW2000程式
二、 執行Winzip8.0
三、 粗跟蹤
1 點HELP-->about winzip...-->register...
2 輸入 Namme:cccc Reg Key: 88888888 (8個8)
3 Ctrl+N 撥出TRW,下斷點:BPX HMEMCPY 按F5 返回
4 點OK,被攔截,
5 bd * , 作廢所有斷點
6 pmodule,直接到達Winzip領空,下程式碼:
0137:00407F6D CALL `USER32!GetDlgItemTextA`
0137:00407F73 PUSH EDI <--來到此行,是WINZIP的程式碼,細跟蹤可以直接中斷到這行[A]
0137:00407F74 CALL 0043F89A
0137:00407F79 PUSH EDI
0137:00407F7A CALL 0043F8C3
0137:00407F7F POP ECX
0137:00407F80 MOV ESI,0048CDA4
0137:00407F85 POP ECX
0137:00407F86 PUSH BYTE +0B
7 按F12,在1次後出現非法註冊碼錯誤對話方塊,點OK退出
8 分析: 按1次後即出現非法註冊碼錯誤框,說明驗證註冊碼就在這段程式碼中(F12 執行到遇到 RET,
RETF,IRET指令時停下來)。接下來應找出具體哪個CALL產生錯誤框,並記錄下大致跳轉的過程。
以便可找出在哪個跳轉位置可以跳過產生錯誤框的的CALL。進一步找出驗證註冊碼、計算註冊碼
的位置。
四、 細跟蹤
1 同前,輸入註冊碼,撥出TRW,設斷點:BPX 004077F73 <--是上面[A]行
2 點OK,被攔截,程式碼如下面[步聚7後面]
3 bc * ,清除所有斷點
4 現在要找出產生誤註冊碼框的的哪個CALL:按F10,即單步跟蹤。一直按F10,一直按,注意記下的次數,
直到出現錯誤框,假設使用次數為X次。
5 從步聚1開始重來,做到步聚4時按F10(X-1)次,即找出了產生錯誤的CALL,
是下面程式碼後部的0137:00408018 CALL 00430025,就是這條指令產生錯誤框。
6 著重分析如何跳過0137:00408018 CALL 00430025這條產生錯誤框指令。讀者可從下面程式碼由後面向前
讀,弄懂本人的分析過程。另也可以首先在離0137:00408018 CALL 00430025這條產生錯誤框指令不遠
程式碼處開始,記錄一份程式執行到0137:00408018 CALL 的跳轉過程,這樣便於直接找出那個重要的跳轉
點,即如本程式中的00407FBC JZ 00408005。
7 現在已基本找出驗證註冊碼的地方了0137:00407FB5 CALL 004079D5 這個CALL中驗證註冊碼,所以要深
入跟蹤進這個CALL。(深入跟蹤步聚在程式碼後面)
0137:00407F6D CALL `USER32!GetDlgItemTextA`
0137:00407F73 PUSH EDI <--中斷於此行,從這行起開始細跟蹤,即按F10鍵。
0137:00407F74 CALL 0043F89A
0137:00407F79 PUSH EDI
0137:00407F7A CALL 0043F8C3
0137:00407F7F POP ECX
0137:00407F80 MOV ESI,0048CDA4
0137:00407F85 POP ECX
0137:00407F86 PUSH BYTE +0B
0137:00407F88 PUSH ESI
.
.
.
0137:00407F96 CALL 0043F89A
0137:00407F9B PUSH ESI
0137:00407F9C CALL 0043F8C3
0137:00407FA1 CMP BYTE [0048CD78],00
0137:00407FA8 POP ECX
0137:00407FA9 POP ECX
0137:00407FAA JZ 00408005
0137:00407FAC CMP BYTE [0048CDA4],00
0137:00407FB3 JZ 00408005
0137:00407FB5 CALL 004079D5 <--就是這個CALL中驗證註冊碼,所以深入跟蹤進入這個CALL
0137:00407FBA TEST EAX,EAX <--就是這個測試(TEST),至關重要,EAX的值由上面的CALL決定,
哪就是說上面這個CALL驗證註冊碼,並相應置EAX的值,決定是
否跳轉。應深入到這個CALL中,找出驗證的地方。
0137:00407FBC JZ 00408005 <--這裡如跳轉則到00408005 CALL,接下去執行00408018 CALL,出錯
0137:00407FBE PUSH EDI
0137:00407FBF MOV EDI,0047FFA4
0137:00407FC4 PUSH DWORD 0047DB24
0137:00407FC9 PUSH EDI
0137:00407FCA CALL 0043B5DA
0137:00407FCF PUSH ESI
0137:00407FD0 PUSH DWORD 0047E66C
0137:00407FD5 PUSH EDI
0137:00407FD6 CALL 0043B5DA
0137:00407FDB PUSH DWORD 0047FFC4
0137:00407FE0 PUSH BYTE +00
0137:00407FE2 PUSH BYTE +00
0137:00407FE4 PUSH DWORD 0047DB30
0137:00407FE9 CALL 0043B5C1
0137:00407FEE MOV EAX,[00487AF4]
0137:00407FF3 ADD ESP,BYTE +28
0137:00407FF6 TEST EAX,EAX
0137:00407FF8 JZ 00408001
0137:00407FFA PUSH EAX
0137:00407FFB CALL `GDI32!DeleteObject`
0137:00408001 PUSH BYTE +01
0137:00408003 JMP SHORT 00408035
0137:00408005 CALL 004082A6 <--上面00407FBC行跳到此行,如執行到此行,則會執行00408018 CALL
0137:0040800A PUSH DWORD 028E 說明上一跳轉已判別出輸入的是錯誤註冊碼。繼續向分分析
0137:0040800F CALL 0043F5ED
0137:00408014 PUSH EAX
0137:00408015 PUSH EBX
0137:00408016 PUSH BYTE +3D
0137:00408018 CALL 00430025 <--執行此行CALL則出現錯誤框,須找出如何才能跳過此行
0137:0040801D ADD ESP,BYTE +10
0137:00408020 INC DWORD [00487AF8]
四、 深入跟蹤
1 重複細跟蹤步聚中的1-3步;
2 按F10,小心不要走過頭呵,一直執行00407FB5 CALL 004079D5 這行;
3 按F8,追入此CALL,來到下面程式碼(程式碼在步聚4後面);
4 按F10,邊按邊分析,值得懷凝地方可檢視各暫存器的內容(用D EAX 、EDI等命令)你會找到下面的
程式碼,本程式就在這裡計算和驗證註冊碼。按F10鍵53次到達0137:00407A97 PUSH EAX(見程式碼),這
裡就是…………。
0137:00407905 POP ESI <-- 追入上敘CALL後,來到此行
0137:00407906 POP EBP
0137:00407907 RET 04
0137:0040790A PUSH ESI
0137:0040790B MOV ESI,ECX
.
.
.
0137:00407A5E PUSH EAX
0137:00407A5F CALL 00467C10
0137:00407A64 PUSH DWORD C8
0137:00407A69 LEA EAX,[EBP+FFFFFDF8]
0137:00407A6F PUSH BYTE +00
0137:00407A71 PUSH EAX
0137:00407A72 CALL 00467C10
0137:00407A77 ADD ESP,BYTE +18
0137:00407A7A TEST ESI,ESI
0137:00407A7C JZ 00407A91
0137:00407A7E CALL 004082A6
0137:00407A83 AND DWORD [00489FDC],BYTE +00
0137:00407A8A XOR EAX,EAX
0137:00407A8C JMP 00407B42
0137:00407A91 LEA EAX,[EBP+FFFFFEC0]
0137:00407A97 PUSH EAX <--按F10鍵53次到這行
0137:00407A98 PUSH EDI <--執行此行後,下令D EDI,顯示‘cccc’,即輸入的註冊名
0137:00407A99 CALL 00407B47 <--呼叫計算註冊碼子程式(新版本)
0137:00407A9E MOV ESI,0048CDA4 <--傳送輸入的註冊碼,執行此行後下令D ESI,顯示‘8個8’
0137:00407AA3 LEA EAX,[EBP+FFFFFEC0]
0137:00407AA9 PUSH ESI <--將輸入的假碼‘8個8’壓入堆疊,下令D ESI,顯示‘8個8’
0137:00407AAA PUSH EAX <--計算出的註冊碼壓入堆疊,下令D EAX 顯示正確註冊碼:
02EC0252
0137:00407AAB CALL 004692D0 <--呼叫驗證註冊碼子程式,看看輸入的是否為新版本註冊碼。
0137:00407AB0 ADD ESP,BYTE +10
0137:00407AB3 NEG EAX
0137:00407AB5 SBB EAX,EAX
0137:00407AB7 INC EAX
0137:00407AB8 MOV [00489FDC],EAX
0137:00407ABD JNZ 00407B27 <--如輸入的註冊碼正確,這裡跳轉,可返回呼叫程式,
可跳過00408018 CALL ,完成程式註冊。
0137:00407ABF LEA EAX,[EBP+FFFFFEC0]
0137:00407AC5 PUSH EAX
0137:00407AC6 PUSH EDI <--執行此行後,下令D EDI,顯示‘cccc’,即輸入的註冊名
0137:00407AC7 CALL 00407BE4 <--呼叫計算註冊碼子程式(老版本)
0137:00407ACC LEA EAX,[EBP+FFFFFEC0]
0137:00407AD2 PUSH ESI <--將輸入的假碼‘8個8’壓入堆疊,下令D ESI,顯示‘8個8’
0137:00407AD3 PUSH EAX <--計算出的註冊碼壓入堆疊,下令D EAX 顯示正確註冊碼:
07480594
0137:00407AD4 CALL 004692D0 <--呼叫驗證註冊碼子程式,看看輸入的是否為新版本註冊碼。
0137:00407AD9 ADD ESP,BYTE +10
0137:00407ADC NEG EAX
0137:00407ADE SBB EAX,EAX
0137:00407AE0 INC EAX
0137:00407AE1 MOV [00489FDC],EAX
0137:00407AE6 JNZ 00407B27
0137:00407AE8 LEA EAX,[EBP+FFFFFEC4]
0137:00407AEE PUSH BYTE +04
0137:00407AF0 PUSH EAX
0137:00407AF1 PUSH ESI
0137:00407AF2 CALL 004696C0
0137:00407AF7 ADD ESP,BYTE +0C
0137:00407AFA TEST EAX,EAX
0137:00407AFC JNZ 00407B20 (JUMP)
0137:00407AFE LEA EAX,[EBP+FFFFFEC0]
0137:00407B04 PUSH BYTE +04
0137:00407B06 PUSH EAX
0137:00407B07 PUSH DWORD 0048CDA8
0137:00407B0C CALL 004696C0
0137:00407B11 ADD ESP,BYTE +0C
0137:00407B14 TEST EAX,EAX
0137:00407B16 JNZ 00407B20
0137:00407B18 MOV [00489FDC],EBX
0137:00407B1E JMP SHORT 00407B27
0137:00407B20 AND DWORD [00489FDC],BYTE +00
0137:00407B27 PUSH DWORD 012C
0137:00407B2C LEA EAX,[EBP+FFFFFEC0]
0137:00407B32 PUSH BYTE +00
0137:00407B34 PUSH EAX
0137:00407B35 CALL 00467C10
0137:00407B3A MOV EAX,[00489FDC]
0137:00407B3F ADD ESP,BYTE +0C
0137:00407B42 POP EDI
0137:00407B43 POP ESI
0137:00407B44 POP EBX
0137:00407B45 LEAVE
0137:00407B46 RET <--執行此行返回呼叫程式
至此,找出註冊碼!
小 結:
此程式有兩處計算和驗證註冊碼的子程式。它可用新版本的註冊碼註冊,亦可用前一版本的
註冊碼完成註冊。
User Name: cccc
Reg Key: 02EC0252 或07480594 (新舊版本註冊碼皆可用)
後 記:
有疑問請與我聯絡:hz.cy@163.net
相關文章
- LeapFTP2.7.0(FileVersion: 2.7.0.550)2000-12-08FTP
- WebZIP 3.80(FileVersion:3.80.0.530) WebZIP.EXE 1,367KB下載地點:http://www.spidersoft.com2000-10-20WebHTTPIDE
- 初學者-Winzip8.02000-11-19
- 13.0、python遞迴函式2018-09-18Python遞迴函式
- 破解實戰(三)之 WinZip8.0 (5千字)2000-07-17
- PostgreSQL 13.0正式版本釋出!更多新特性來襲2020-09-25SQL
- MacOS 13.0b2 離線系統安裝包2022-06-26Mac
- QuartusII13.0 版本的安裝與使用舉例2020-10-13
- Bit、Byte、kb、KB、MB、KiB、MiB各表示什麼意思?2018-12-28
- 某物業Apk減肥 從5344KB到3009KB2017-12-20APK
- macOS Ventura 13.0 (22A380) Boot ISO 原版可引導映象2022-10-25Macboot
- Oracle 32bit 升級到64bit2009-03-26Oracle
- 32bit和64bit的問題2007-04-09
- Make編譯之編譯32bit ffmpeg2024-04-04編譯
- Paste Wizard for Mac(剪貼簿管理器) 13.0完整啟用版2023-11-09ASTMac
- OpenGLES API 3.0在 32bit裝置上失效2017-12-27API
- openfiler(for linux 32bit)安裝配置小記2010-07-29Linux
- KB-Oracle 9i NVarchar2009-07-05Oracle
- kb get pod -o wide命令2024-03-18IDE
- 32bit Pl/SQL developer 報can not find oci.dll2015-02-17SQLDeveloper
- Mongodb原始碼分析之balancer(均衡)KB2022-03-21MongoDB原始碼
- 32bit的linux系統記憶體分佈2024-05-26Linux記憶體
- macOS Ventura 13.0 (22A380) 正式版釋出,ISO、IPSW、PKG 下載2022-10-25Mac
- Win7獲KB4493132更新2019-04-14Win7
- Windows 32bit OS上實體記憶體限制以及ORACLE 10G 在32bit OS的SGA記憶體分配限制解決方法2007-03-28Windows記憶體Oracle 10g
- 我寫了一個Winzip8.0的序號產生器供大家參考 (225字)2001-04-09
- Your CPU does not support long mode.Use a 32bit distribution.2010-09-29
- 64bit client 與 32bit plsqldev是不相容的2012-02-15clientSQLdev
- 32bit Convert
It 9.52.01破解手記--找到註冊碼2015-11-15
- KiB、MiB與KB、MB的區別2015-09-09
- Hadoop大資料分析市場以13.0%的複合年增長率增長2021-12-22Hadoop大資料
- [整理] 32Bit Windows & SQL Server 大容量記憶體使用設定2009-02-26WindowsSQLServer記憶體
- linux 上32bit的 database向 64bit的database遷移2011-10-13LinuxDatabase
- oracle 10g on windows 2003 32bit sga限制問題2011-12-06Oracle 10gWindows
- 【gg notes】config gg for windows x86 32bit ,two node2013-04-16Windows
- solaris 10 x86(32bit)_format_disk_新增硬碟分割槽_操作2009-08-23ORM硬碟
- win10更新kb4486153安裝不了怎麼辦_win10更新kb4486153安裝不了修復方法2020-03-21Win10
- windows10安裝補丁kb失敗怎麼解決_windows10更新安裝補丁kb失敗如何處理2020-07-15Windows