ollyDbg教程之一
Alive Text to Speech V3.6.8.2註冊演算法分析
軟體大小: 11405 KB
軟體語言: 英文
軟體類別: 國外軟體 / 共享版 / 音訊轉換
應用平臺: Win9x/NT/2000/XP
介面預覽: 無
加入時間: 2003-08-17 15:04:37
下載次數: 88
推薦等級:
聯 系 人: support@alivemedia.net
開 發 商: http://www.alivemedia.net/
軟體介紹:
Alive Text to Speech 可以把 TXT 文字檔案直接轉換成 MP3、WAV、WMA、OGG 或 VOX
檔,有別於一般Text to Speech 軟體只能透過 TTS 朗讀的功能,支援 Command Line 指令、透過滑鼠右鍵選單也可以操作。
下載地址:http://www.skycn.net/soft/13508.html
目標:基本學會使用ollyDbg(ollyDbg下載地址:http://home.tonline.de/home/Ollydbg/)
近來時間太少了,本來想來幾個BT級的,可惜要花時間太多,還是先來點簡單一點的。
今天將使用32位程式級的偵錯程式--ollyDbg出馬,這個東東操作簡便,提示資訊量大,首先,為了讓新手有一初步瞭解,先介紹一個簡單的操作,
快捷鍵:
F3,裝入程式
F8,單步執行,不進入call
F7,單步執行,進入call
CTRL+F9,相當於trw2000的F12
ALT+F9,相關於trw2000的pmodule
F2,設定斷點(相當於trw2000的F9)
視窗:
左上:程式碼區
左下:記憶體資料
右上:暫存器
右下:stack區
先了解那麼多就可以了,先用fi301看一下,是用aspack加的殼,用aspackdie可以輕鬆脫殼。先執行一下程式,註冊時有提示,作了一些簡單瞭解後,程式用VC編寫,可以用MessageBoxA下斷,怎麼下斷呢?簡單的方法就是CTRL+n,在跳出的視窗中選擇Name為MessageBoxA的函式,右擊在彈出的選單中選擇fild references to import,在彈出的視窗中依次對其下斷。
來到這裡
0048E77F PUSH 0
0048E781 PUSH 0
0048E783 PUSH 0
0048E785 PUSH EBX
0048E786 PUSH ESI
0048E787 MOV DWORD PTR SS:[EBP-8],ECX
0048E78A MOV DWORD PTR SS:[EBP-4],EDX
0048E78D MOV ESI,EAX
0048E78F MOV EAX,DWORD PTR SS:[EBP-4]
; 使用者名稱
0048E792 CALL unpacked.00404B80
0048E797 MOV EAX,DWORD PTR SS:[EBP-8]
; 註冊碼
0048E79A CALL unpacked.00404B80
0048E79F XOR EAX,EAX
0048E7A1 PUSH EBP
0048E7A2 PUSH unpacked.0048E872
0048E7A7 PUSH DWORD PTR FS:[EAX]
0048E7AA MOV DWORD PTR FS:[EAX],ESP
0048E7AD XOR EBX,EBX
0048E7AF MOV EDX,DWORD PTR SS:[EBP-4]
; 使用者名稱
0048E7B2 MOV EAX,unpacked.0048E88C
; ASCII "appzplanet"
0048E7B7 CALL unpacked.00404CD4
0048E7BC TEST EAX,EAX
0048E7BE JLE SHORT unpacked.0048E7CB
0048E7C0 LEA EAX,DWORD PTR SS:[EBP-8]
0048E7C3 MOV EDX,DWORD PTR SS:[EBP-4]
0048E7C6 CALL unpacked.00404778
0048E7CB LEA ECX,DWORD PTR SS:[EBP-C]
0048E7CE MOV EDX,DWORD PTR SS:[EBP-4]
0048E7D1 MOV EAX,ESI
0048E7D3 CALL unpacked.0048E91C
; 產生真碼,F8進入
0048E7D8 MOV EDX,DWORD PTR SS:[EBP-C]
; 真碼入edx
0048E7DB MOV EAX,DWORD PTR SS:[EBP-8]
; 假碼入eax
0048E7DE CALL unpacked.00408AA4
; 關鍵比較
0048E7E3 TEST EAX,EAX
0048E7E5 JNZ SHORT unpacked.0048E828
; 關鍵跳轉
0048E7E7 MOV EDX,DWORD PTR SS:[EBP-4]
0048E7EA MOV EAX,ESI
0048E7EC CALL unpacked.0048DBC4
0048E7F1 TEST AL,AL
0048E7F3 JE SHORT unpacked.0048E857
0048E7F5 MOV BL,1
0048E7F7 PUSH 40
0048E7F9 LEA EDX,DWORD PTR SS:[EBP-10]
0048E7FC MOV EAX,DWORD PTR DS:[4C2000]
0048E801 MOV EAX,DWORD PTR DS:[EAX]
0048E803 CALL unpacked.00467F24
0048E808 MOV EAX,DWORD PTR SS:[EBP-10]
0048E80B CALL unpacked.00404B90
0048E810 PUSH EAX
; |Title
0048E811 PUSH unpacked.0048E898
; |Text = "Registration success, Thanks for
your registration."
0048E816 MOV EAX,DWORD PTR DS:[4C2000]
; |
0048E81B MOV EAX,DWORD PTR DS:[EAX]
; |
0048E81D MOV EAX,DWORD PTR DS:[EAX+30]
; |
0048E820 PUSH EAX
; |hOwner
0048E821 CALL <JMP.&user32.MessageBoxA>
; \MessageBoxA
0048E826 JMP SHORT unpacked.0048E857
0048E828 PUSH 10
0048E82A LEA EDX,DWORD PTR SS:[EBP-14]
0048E82D MOV EAX,DWORD PTR DS:[4C2000]
0048E832 MOV EAX,DWORD PTR DS:[EAX]
0048E834 CALL unpacked.00467F24
0048E839 MOV EAX,DWORD PTR SS:[EBP-14]
0048E83C CALL unpacked.00404B90
0048E841 PUSH EAX
; |Title
0048E842 PUSH unpacked.0048E8CC
; |Text = "Invalid Registration Code!
Please enter an available Registration Code."
0048E847 MOV EAX,DWORD PTR DS:[4C2000]
; |
0048E84C MOV EAX,DWORD PTR DS:[EAX]
; |
0048E84E MOV EAX,DWORD PTR DS:[EAX+30]
; |
0048E851 PUSH EAX
; |hOwner
0048E852 CALL <JMP.&user32.MessageBoxA>
; \MessageBoxA
0048E857 XOR EAX,EAX
0048E859 POP EDX
------------------------------------
進入上面的call
0048E939 MOV EAX,DWORD PTR
SS:[EBP-4]
0048E93C CALL unpacked.00404B80
0048E941 XOR EAX,EAX
0048E943 PUSH EBP
0048E944 PUSH unpacked.0048EA77
0048E949 PUSH DWORD PTR FS:[EAX]
0048E94C MOV DWORD PTR FS:[EAX],ESP
0048E94F LEA EAX,DWORD PTR SS:[EBP-4]
0048E952 MOV EDX,unpacked.0048EA90
; ASCII "T7e6xtS9p2e"
0048E957 CALL unpacked.004049A0
; 接成lordorT7e6xtS9p2e
0048E95C MOV EAX,DWORD PTR SS:[EBP-4]
0048E95F CALL unpacked.00404998
; 長度
0048E964 MOV ESI,EAX
; esi為長度
0048E966 SAR ESI,1
; 長度右移一位
0048E968 JNS SHORT unpacked.0048E96D
0048E96A ADC ESI,0
0048E96D LEA EAX,DWORD PTR SS:[EBP-10]
0048E970 PUSH EAX
0048E971 MOV ECX,ESI
0048E973 MOV EDX,1
0048E978 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:lordorT7e6xtS9p2e
0048E97B CALL unpacked.00404BF0
; 從串第一位開始,取esi位,此為lordorT7
0048E980 MOV EAX,DWORD PTR SS:[EBP-10]
; 取得的8位lordorT7
0048E983 PUSH EAX
0048E984 LEA EAX,DWORD PTR SS:[EBP-14]
0048E987 PUSH EAX
0048E988 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:lordorT7e6xtS9p2e
0048E98B CALL unpacked.00404998
; 長度
0048E990 MOV ECX,EAX
0048E992 LEA EDX,DWORD PTR DS:[ESI+1]
0048E995 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:lordorT7e6xtS9p2e
0048E998 CALL unpacked.00404BF0
; 取餘下的串值 ,此為e6xtS9p2e
0048E99D MOV EDX,DWORD PTR SS:[EBP-14]
; e6xtS9p2e入edx
0048E9A0 LEA EAX,DWORD PTR SS:[EBP-4]
0048E9A3 POP ECX
; 串1:lordorT7
0048E9A4 CALL unpacked.004049E4
; 串1放在後面,串2放在前面:e6xtS9p2elordorT7
0048E9A9 LEA EAX,DWORD PTR SS:[EBP-8]
0048E9AC PUSH EAX
0048E9AD MOV ECX,0A
0048E9B2 MOV EDX,1
0048E9B7 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:e6xtS9p2elordorT7
0048E9BA CALL unpacked.00404BF0
; 從第1位開始,取10位,此為e6xtS9p2el
0048E9BF LEA EAX,DWORD PTR SS:[EBP-C]
0048E9C2 PUSH EAX
0048E9C3 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:e6xtS9p2elordorT7
0048E9C6 CALL unpacked.00404998
; 長度
0048E9CB MOV ECX,EAX
0048E9CD MOV EDX,6
0048E9D2 MOV EAX,DWORD PTR SS:[EBP-4]
; 串:e6xtS9p2elordorT7
0048E9D5 CALL unpacked.00404BF0
; 從第6位開始,取餘下的位,此為9p2elordorT7
0048E9DA CMP DWORD PTR SS:[EBP-C],0
0048E9DE JNZ SHORT unpacked.0048E9F0
0048E9E0 LEA EAX,DWORD PTR SS:[EBP-C]
0048E9E3 MOV EDX,unpacked.0048EA90
; ASCII "T7e6xtS9p2e"
0048E9E8 MOV ECX,DWORD PTR SS:[EBP-8]
0048E9EB CALL unpacked.004049E4
0048E9F0 PUSH EBX
0048E9F1 MOV ECX,DWORD PTR SS:[EBP-C]
; 串1:9p2elordorT7
0048E9F4 MOV EDX,DWORD PTR SS:[EBP-8]
; 串2:e6xtS9p2el
0048E9F7 MOV EAX,EDI
0048E9F9 CALL unpacked.0048DA74
; 關鍵,進入
0048E9FE LEA EAX,DWORD PTR SS:[EBP-18]
0048EA01 PUSH EAX
0048EA02 MOV EAX,DWORD PTR DS:[EBX]
; 串:1005FE56C85B48280D653CD
0048EA04 MOV ECX,5
0048EA09 MOV EDX,1
0048EA0E CALL unpacked.00404BF0
; 從第1位開始,取5位
0048EA13 PUSH DWORD PTR SS:[EBP-18]
0048EA16 PUSH unpacked.0048EAA4
0048EA1B LEA EAX,DWORD PTR SS:[EBP-1C]
0048EA1E PUSH EAX
0048EA1F MOV EAX,DWORD PTR DS:[EBX]
0048EA21 MOV ECX,5
0048EA26 MOV EDX,6
0048EA2B CALL unpacked.00404BF0
; 第6位開始,取5位
0048EA30 PUSH DWORD PTR SS:[EBP-1C]
0048EA33 PUSH unpacked.0048EAA4
0048EA38 LEA EAX,DWORD PTR SS:[EBP-20]
0048EA3B PUSH EAX
0048EA3C MOV EAX,DWORD PTR DS:[EBX]
0048EA3E MOV ECX,5
0048EA43 MOV EDX,0B
0048EA48 CALL unpacked.00404BF0
; 從第11位開始,取5位
0048EA4D PUSH DWORD PTR SS:[EBP-20]
0048EA50 MOV EAX,EBX
0048EA52 MOV EDX,5
0048EA57 CALL unpacked.00404A58
;
0048EA5C XOR EAX,EAX
; unpacked.0048EA5C
0048EA5E POP EDX
0048EA5F POP ECX
0048EA60 POP ECX
0048EA61 MOV DWORD PTR FS:[EAX],EDX
0048EA64 PUSH unpacked.0048EA7E
0048EA69 LEA EAX,DWORD PTR SS:[EBP-20]
0048EA6C MOV EDX,8
0048EA71 CALL unpacked.00404704
0048EA76 RETN
0048EA77 JMP unpacked.00404064
-----------------------------
再次進入0048E9F9 CALL unpacked.0048DA74處的call
0048DA9E PUSH unpacked.0048DB90
0048DAA3 PUSH DWORD PTR FS:[EAX]
0048DAA6 MOV DWORD PTR FS:[EAX],ESP
0048DAA9 MOV EAX,DWORD PTR SS:[EBP-8]
0048DAAC CALL unpacked.00404998
0048DAB1 MOV DWORD PTR SS:[EBP-C],EAX
0048DAB4 CMP DWORD PTR SS:[EBP-C],0
0048DAB8 JNZ SHORT unpacked.0048DAC7
0048DABA LEA EAX,DWORD PTR SS:[EBP-8]
0048DABD MOV EDX,unpacked.0048DBA8
; ASCII "Think Space"
0048DAC2 CALL unpacked.00404778
; 長度
0048DAC7 XOR ESI,ESI
0048DAC9 MOV EBX,100
0048DACE LEA EAX,DWORD PTR SS:[EBP-10]
0048DAD1 PUSH EAX
; /Arg1
0048DAD2 MOV DWORD PTR SS:[EBP-1C],100
; |
0048DAD9 MOV BYTE PTR SS:[EBP-18],0
; |
0048DADD LEA EDX,DWORD PTR SS:[EBP-1C]
; |
0048DAE0 XOR ECX,ECX
; |
0048DAE2 MOV EAX,unpacked.0048DBBC
; |ASCII "%1.2x"
0048DAE7 CALL unpacked.00409E4C
; \unpacked.00409E4C
0048DAEC MOV EAX,DWORD PTR SS:[EBP-4]
; 上面產生100(H)
0048DAEF CALL unpacked.00404998
0048DAF4 MOV EDI,EAX
0048DAF6 TEST EDI,EDI
0048DAF8 JLE SHORT unpacked.0048DB5A
0048DAFA MOV DWORD PTR SS:[EBP-14],1
0048DB01 /MOV EAX,DWORD PTR SS:[EBP-4]
; 串1入eax
0048DB04 |MOV EDX,DWORD PTR SS:[EBP-14]
; 計數器
0048DB07 |MOVZX EAX,BYTE PTR DS:[EAX+EDX-1] ;
串1各位依次入eax
0048DB0C |ADD EAX,EBX
; eax=eax+ebx
0048DB0E |MOV ECX,0FF
0048DB13 |CDQ
0048DB14 |IDIV ECX
; 即為取FF的模
0048DB16 |MOV EBX,EDX
; 餘數入ebx
0048DB18 |CMP ESI,DWORD PTR SS:[EBP-C]
0048DB1B |JGE SHORT unpacked.0048DB20
0048DB1D |INC ESI
0048DB1E |JMP SHORT unpacked.0048DB25
0048DB20 |MOV ESI,1
0048DB25 |MOV EAX,DWORD PTR SS:[EBP-8]
; 串2入 eax
0048DB28 |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1] ;
串2位次入eax
0048DB2D |XOR EBX,EAX
; ebx=ebx xor eax
0048DB2F |LEA EAX,DWORD PTR SS:[EBP-20]
0048DB32 |PUSH EAX
; /Arg1
0048DB33 |MOV DWORD PTR SS:[EBP-1C],EBX
; |
0048DB36 |MOV BYTE PTR SS:[EBP-18],0
; |
0048DB3A |LEA EDX,DWORD PTR SS:[EBP-1C]
; |
0048DB3D |XOR ECX,ECX
; |
0048DB3F |MOV EAX,unpacked.0048DBBC
; |ASCII "%1.2x"
0048DB44 |CALL unpacked.00409E4C
; \unpacked.00409E4C
0048DB49 |MOV EDX,DWORD PTR SS:[EBP-20]
; 把ebx轉換為十六進位制
0048DB4C |LEA EAX,DWORD PTR SS:[EBP-10]
0048DB4F |CALL unpacked.004049A0
; 各位接起來
0048DB54 |INC DWORD PTR SS:[EBP-14]
0048DB57 |DEC EDI
0048DB58 \JNZ SHORT unpacked.0048DB01
0048DB5A MOV EAX,DWORD PTR SS:[EBP+8]
0048DB5D MOV EDX,DWORD PTR SS:[EBP-10]
0048DB60 CALL unpacked.00404734
0048DB65 XOR EAX,EAX
0048DB67 POP EDX
0048DB68 POP ECX
0048DB69 POP ECX
0048DB6A MOV DWORD PTR FS:[EAX],EDX
總結:
--------------
反推:
使用者名稱加在串“T7e6xtS9p2e”前面,形成串S:lordorT7e6xtS9p2e,串S按其長度除2分為兩子串:串S1:lordorT7,串S2:e6xtS9p2e,然後串S2放在前面,串S1放在後面,形成e6xtS9p2elordorT7,對其串再取兩子串:第1位開始取10位,
即為串1:e6xtS9p2el,第6位開始,取餘下位,即為串2:9p2elordorT7先設ebx=100(H),取串1的第1位HEX值,取(100+第1位HEX)的FF模,得A值,設為ebx=A,取對應位的串2的HEX值B,ebx=ebx
xor B,此ebx(H)轉換為字串,即為兩位註冊碼,如此繼續。最後從生成的串中取前面15位,形成
XXXXX-XXXXX-XXXXX,此即為註冊碼。
比較簡單的程式,有空再補上序號產生器(keymake的就不做了)。下一篇,將介紹ollyDbg高階斷點技術。
一個可用的註冊碼:
使用者名稱:lordor
註冊碼:1005F-E56C8-5B482
cracked by lordor
03.8.22
相關文章
- [譯]The
other ways to detect OllyDbg 檢測OllyDbg的另類方法2015-11-15
- 遊戲修改器製作教程五:OllyDBG和其他除錯工具2015-12-04遊戲除錯
- OpenGL系列教程之一:OpenGL(轉)2018-07-12
- ollydbg的教學-Run trace2003-02-19
- Docker教程之一概述和作用2018-07-13Docker
- Spring Security系列教程之一簡介2018-07-02Spring
- 用Ollydbg破解全功能數字時鐘(想學用Ollydbg破VB的必看!) (1千字)2001-11-03
- Kibana教程之一:下載與安裝2018-12-06
- 微信小程式入門教程之一:初次上手2020-10-26微信小程式
- Shiro系列教程之一Shiro簡介2018-07-02
- 用ollydbg快速破解UniView
(2千字)2015-11-15View
- 用Ollydbg破解SWFBrowser 2.93 (7千字)2002-01-11
- ollydbg破解教學之--------萬能斷點篇2015-11-15斷點
- Go 高效能系列教程之一:基準測試2021-05-26Go
- 用OllyDBg動態破解入門 (3千字)2001-11-13
- 解除DLSupCBT的NAG窗和KEY檔案製作[原創] OLLYDBG初級教程,給初學者 (13千字)2015-11-15
- H5 Audio ES6版 系列教程之一2018-03-16H5
- 用一個月整理的Pandas的教程!最全面的教程沒有之一!先收藏吧!2018-12-26
- 用Ollydbg手脫Petite
V2.2加殼的DLL2004-12-27
- [原創]OllyDbg實用技巧六則 (3千字)2003-02-23
- Nodejs教程19:WebSocket之一:使用Socket.io建立WebSocket應用2019-03-11NodeJSWeb
- 最全SpringBoot學習教程,程式設計師必學之一2021-09-24Spring Boot程式設計師
- SAP UI5 初學者教程之一:Hello World 試讀版2021-10-07UI
- OllyDbg 的快捷命令欄外掛快捷命令 (2千字)2003-02-10
- 用ollydbg找eBook Edit Pro v3.21的註冊碼2003-02-12
- 淺談用Ollydbg跟蹤vb程式---soli
兄弟的問題2015-11-15
- 用ollyDbg尋找VB程式的註冊核心的一點思路2003-06-20
- 用Ollydbg快速手脫Krypton 0.5加殼程式――Krypton主程式
等2015-11-15
- 如何用 OllyDbg 的跟蹤功能分析虛擬機器保護2017-01-14虛擬機
- 菜鳥的ollydbg1.08b教學篇 (10千字)2003-01-27
- 用ollydbg破《財神電話薄》(用pcode編的) (923字)2002-02-08
- 用ollydbg破《水芯 Flash播放器 v1.0》 (514字)2002-02-09播放器
- 用ollydbg跟蹤te!lock加殼的軟體
(2千字)2015-11-15
- ollydbg -- WinISO v5.3中文版註冊演算法2015-11-15演算法
- redis操作之一2015-07-16Redis
- Mysql提醒之一2014-09-22MySql
- Oracle DataPump之一2010-11-18Oracle
- SAP系統和微信整合的系列教程之一:微信開發環境的搭建2021-01-06開發環境