再來一篇OLLYDBG的萬能斷點-----File Shredder 3.7的演算法探析
再來一篇OLLYDBG的萬能斷點-----File Shredder 3.7的演算法探析
軟體介紹:
File Shredder 3.7
軟體大小:105KB
軟體語言:英文
軟體類別:國外軟體/共享版/解除安裝工具
執行環境:Win9x/Me/NT/2000/XP
加入時間:2003-10-8 16:05:51
下載次數:525
軟體評級:
聯 系 人:未知
開 發 商:Home Page
軟體介紹:
檔案徹底刪除工具,直接在資源管理器點選右鍵選擇相應選項即可徹底刪除檔案,可選擇對其進行多遍複寫,以達到永遠無法恢復的目的。
下載地址
http://www.onlinedown.net/soft/10694.htm
破解作者
yzez[DFCG]
破解工具
我的ODBG109B
破解環境
WINDOWS XP作業系統
破解目的
不為破解而破解,只因為技術而破解
破解過程
1、只使用了查殼工具,沒有使用其他工具,經查無殼,VC程式設計,用OD載入程式,在最下邊的命令框裡輸入:bpx hmemcpy萬能斷點,按Enter鍵,出現互相調變的CALL對話方塊,在框裡右鍵點選,在所有的CALL上都設定好斷點,再按F9,也可以邊按F9,邊按F2去掉無用的斷點,到出現註冊資訊框後,輸入任意註冊資訊,我輸入,使用者名稱:yzez,使用者單位:yzez[DFCG],試驗碼:12345678,點確定程式被斷在004059BB處,按F8往下走
004059BB CALL DWORD PTR DS:[<&USER32.GetDlgIte>****點註冊確定後我們中斷在此,按F
004059C1 POP EDI ****8往下走,因為還沒有到核心段!
004059C2 POP ESI ****注意在這個斷點會返回三次!
004059C3 MOV EAX, 1
004059C8 POP EBX
004059C9 RETN*******************************在這裡程式返回,第三次後返回的程式碼如下
==================================================================================
00402264 MOV AL, BYTE PTR DS:[ESI]*****第三次後程式返回到這裡!把使用者名稱的第一位y
********************************************送入AL,AL的值是79即y的ASCII碼值!
00402266 ADD ESP, 30
00402269 TEST AL, AL********************測試是否為0
0040226B JNZ SHORT Shredder.0040228B***不為0往下跳!
0040226D CMP BYTE PTR DS:[EDI], 0
00402270 JNZ SHORT Shredder.0040228B
00402272 MOV BYTE PTR DS:[ESI], 0
00402275 MOV BYTE PTR DS:[EDI], 0
00402278 MOV DWORD PTR DS:[ESI+64], 0
0040227F MOV DWORD PTR DS:[ESI+68], 1
00402286 JMP Shredder.00402334
0040228B LEA EAX, DWORD PTR SS:[ESP+10]**上面跳到此處!賦試驗碼的地址值給EAX
0040228F PUSH EAX*************************試驗碼入棧!
00402290 CALL Shredder.0040CE90***********此CALL把試驗碼轉換成十六進位制值,
**************************************即12345678轉換成十六進位制值是:BC614E
00402295 PUSH ESI*****************使用者名稱:yzez入棧!
00402296 MOV EBX, EAX************轉換成十六進位制值的試驗碼儲存到EBX中
00402298 CALL Shredder.00405920***對使用者名稱運算,得到的值是由3811A,程式碼看後面
0040229D ADD ESP, 8
004022A0 CMP EAX, 119A792********比較93811A與119A792
004022A5 JNZ SHORT Shredder.004022BF****不相等就跳!
004022A7 MOV EBX, DWORD PTR DS:[<&KERNEL32.ls
004022AD PUSH Shredder.00418084
004022B2 PUSH ESI
004022B3 CALL EBX
004022B5 PUSH Shredder.00418074
004022BA PUSH EDI
004022BB CALL EBX
004022BD JMP SHORT Shredder.004022C6
004022BF CMP EAX, 0D5FCE3C*************跳到這裡比較
004022C4 JNZ SHORT Shredder.004022D2***不相等再跳!
004022C6 PUSH EDI
004022C7 PUSH ESI
004022C8 CALL Shredder.004056A0
004022CD ADD ESP, 8
004022D0 MOV EBX, EAX
004022D2 PUSH EDI*********************跳到這裡
004022D3 PUSH ESI
004022D4 CALL Shredder.004056A0**********關鍵CALL按F7跟進!
004022D9 ADD ESP, 8
004022DC CMP EBX, EAX****************EAX是97C02543,EAX是試驗碼:BC614E
004022DE JE SHORT Shredder.004022FE*相等就跳,一跳就恭喜了,註冊成功!
004022E0 PUSH 0EACF
004022E5 PUSH 1388
004022EA PUSH EBP
004022EB CALL Shredder.004056D0
004022F0 ADD ESP, 0C
004022F3 POP EDI
004022F4 POP ESI ; Shredder.0041EE38
004022F5 POP EBP
004022F6 POP EBX
004022F7 ADD ESP, 100
004022FD RETN
=================================================================================
********************關鍵CALL********************************************
004056A0 MOV EAX, DWORD PTR SS:[ESP+4] ; Shredder.0041EE38
004056A4 PUSH ESI
004056A5 MOV ESI, DWORD PTR DS:[424358]****424358地址處存放的值95989598入ESI
004056AB PUSH EAX
004056AC OR ESI, 378********************ESI OR 378=95989598 OR 378=959897F8
004056B2 CALL Shredder.00405920***********演算法CALL(1),對使用者名稱運算,按F7跟進!
004056B7 MOV ECX, DWORD PTR SS:[ESP+10]
004056BB ADD ESI, EAX*******************ESI=ESI+EAX=959897F8+93811A=962C1912
004056BD PUSH ECX
004056BE CALL Shredder.00405920**********演算法CALL(2)再對使用者單位同上運算,得到
********************************************的值是:1940C31
004056C3 ADD ESP, 8
004056C6 ADD EAX, ESI*******************EAX=ESI+EAX=959897F8+1940C31=97C02543
*********************************************把它轉化成十進位制值就是我們要找的註冊碼!
004056C8 POP ESI ; Shredder.0041EE38
004056C9 RETN
==================================================================================
*************演算法CALL的程式碼!***********************************************
00405920 PUSH ECX****跟進演算法CALL後我們停在這裡!
00405921 PUSH EBX
00405922 MOV EBX, DWORD PTR SS:[ESP+C]
00405926 PUSH ESI
00405927 XOR ESI, ESI
00405929 PUSH EBX**************************使用者名稱入棧!
0040592A MOV DWORD PTR SS:[ESP+C], ESI
0040592E CALL DWORD PTR DS:[<&KERNEL32.lstrlen>**取得使用者名稱的位數:4
00405934 TEST EBX, EBX***************************測試使用者名稱輸入了嗎?
00405936 JE SHORT Shredder.00405987************沒有輸入就跳走,跳就失敗
00405938 TEST EAX, EAX
0040593A JE SHORT Shredder.00405987
0040593C XOR EDX, EDX***************************EDX清0
0040593E TEST EAX, EAX
00405940 JLE SHORT Shredder.00405987
00405942 PUSH EBP
00405943 PUSH EDI*********************使用者單位:yzez[DFCG]入棧
00405944 MOV ESI, Shredder.0041972C** "|b!pz*ls;rn|lf$vi^Axpe)rx5aic& 9/2m5lsi4@0dmZw94cmqpfhw"這是軟體內建的一張表!把這張表移入ESI
00405949 MOV EDI, 1******************賦EDI的值為1
0040594E SUB ESI, EBX****************ESI=ESI-EBC,即減去使用者名稱的位數4
00405950 MOV ECX, EBX****************使用者名稱移入ECX中
00405952 SUB EDI, EBX****************EDI減去EBX
00405954 MOVSX EBX, BYTE PTR DS:[ESI+ECX]*密碼錶中的第一位“|”的HEX值7C擴充套件到EBX
00405958 MOVSX EBP, BYTE PTR DS:[EAX+EDX+4196F4]*EAX+EDX+4196F4=4196F8存放的值B
********************的ASCII碼值42擴充套件到EBP
00405960 IMUL EBX, EBP***EBX=EBX*EBP=7C*42=1FF8
00405963 LEA EBP, DWORD PTR DS:[EDI+ECX]**移入1到EBP,可能是其位數第一位!
00405966 IMUL EBX, EBP******EBX=EBX*EBP=1FF8*1=1FF8
00405969 MOVSX EBP, BYTE PTR DS:[ECX]**使用者名稱的第一位“y”的HEX值79擴充套件到EBP
0040596C IMUL EBX, EBP******EBX=EBX*EBP=1FF8*79=F1C38
0040596F MOV EBP, DWORD PTR SS:[ESP+10]**賦EBP的值為0
00405973 ADD EBP, EBX******EBP=EBP+EBX,第一次迴圈EBP的值為F1C38
00405975 INC EDX***********EDX加1
00405976 INC ECX***********ECX減1
00405977 CMP EDX, EAX******比較1和4
00405979 MOV DWORD PTR SS:[ESP+10], EBP***儲存值F1C38
0040597D JL SHORT Shredder.00405954******小於就跳,迴圈!最後的值是:65BF00,***再把上述的值相加即得到:93811A
0040597F MOV EAX, EBP****把93811A移入EAX!
00405981 POP EDI
00405982 POP EBP
00405983 POP ESI
00405984 POP EBX
00405985 POP ECX
00405986 RETN*********************************這個子程式結束,我們回到上面!
附上密碼錶:
004196F1 25 64 00 23 73 65 72 42 %d.#serB
004196F9 26 6E 7A 7C 6D 66 4D 31 &nz|mfM1
00419701 2F 35 28 21 73 64 24 4D /5(!sd$M
00419709 71 2E 7B 73 5D 2B 73 46 q.{s]+sF
00419711 6A 74 4B 70 7A 53 64 74 jtKpzSdt
00419719 7A 6F 58 71 6D 62 5E 41 zoXqmb^A
00419721 6C 40 64 76 3A 73 3F 78 l@dv:s?x
00419729 2F 00 00 7C 62 21 70 7A /..|b!pz
00419731 2A 6C 73 3B 72 6E 7C 6C *ls;rn|l
00419739 66 24 76 69 5E 41 78 70 f$vi^Axp
00419741 65 29 72 78 35 61 69 63 e)rx5aic
00419749 26 39 2F 32 6D 35 6C 73 &9/2m5ls
00419751 69 34 40 30 64 6D 5A 77 i4@0dmZw
00419759 39 34 63 6D 71 70 66 68 94cmqpfh
00419761 77 w
一個可用的註冊碼:使用者名稱:yzez,使用者單位:yzez[DFCG],註冊碼是:2545952067
相關文章
- ollydbg破解教學之--------萬能斷點篇2015-11-15斷點
- File Shredder 2000破解筆記及註冊演算法 (5千字)2003-04-30筆記演算法
- 再來一篇演算法分析,eryl兄弟你要的東西!! (15千字)2015-11-15演算法
- 萬能歐幾里得演算法2024-07-03演算法
- 程式排程的原理和演算法探析2023-08-30演算法
- 再來一篇不錯的文章,討論Interface與Abstract的關係2002-08-19
- 《啊哈!演算法》第4章 萬能的搜尋2014-06-22演算法
- FlashSnap 1.0的簡單脫殼與演算法探析2015-11-15演算法
- 用ollyDbg尋找VB程式的註冊核心的一點思路2003-06-20
- javascript實現的按鈕間隔指定時間再能點選2017-03-26JavaScript
- 以Hub為中心節點的網路技術探析2023-12-07
- [譯]The
other ways to detect OllyDbg 檢測OllyDbg的另類方法2015-11-15
- IT真的是萬能的嗎?2018-06-05
- resizableImageWithCapInsets 方法的探析2016-03-08API
- 萬能的Python,還能用來製作高大上的進度條?2019-03-18Python
- 再來一篇深度優先遍歷/搜尋總結?2020-05-22
- ollydbg的教學-Run trace2003-02-19
- 再來Oracle的RMAN異地異系統恢復,總算能open了2009-01-06Oracle
- 萬能碼的碼上付來襲(安全掃碼專業委員會)2021-11-29
- 運維利器萬能的 strace2017-12-25運維
- 運維利器:萬能的 strace2016-05-30運維
- 每天來點演算法_12014-04-13演算法
- 來一篇VB的破解教程,看看作者的斷點下到了什麼地方,得好好消化消化了,嘿嘿,喜歡VB的和痛恨VB的都來看看...
(9千字)2001-12-30斷點
- 函式:萬能的百寶箱2020-12-14函式
- 萬能的產品策劃公式2014-05-21公式
- 萬能碼功能不斷開發(安全掃碼專業委員會)2021-11-02
- 萬能碼立志不斷前進(安全掃碼專業委員會)2021-12-02
- 探析Oracle的Exadata Storage Server2010-11-19OracleServer
- 音樂遊戲還能怎麼玩?來看看《再見狂野之心》吧2020-01-21遊戲
- Pycharm的斷點除錯2018-07-27PyCharm斷點除錯
- gdbkerneldebug的程式斷點2018-05-11斷點
- 萬能 Java2015-03-19Java
- db file async I/O submit等待事件的故障診斷2015-05-22MIT事件
- 萬能碼從基本到不斷完善(安全掃碼專業委員會)2021-11-08
- 常用的10個 Excel 萬能公式套路2019-01-04Excel公式
- 萬能的計算日期函式(轉)2007-08-11函式
- AI賦能,全面築牢防線:重點非煤礦山重大災害風險防控系統探析2024-07-10AI
- 3.72024-06-19