Ollydbg使用教程学习总结(三)
解密系列之OD使用教程9
程序:MrBills.exe
點擊注冊,輸入郵箱和序列號后提示如下
突破口:該提示窗口中的字符串,查找如下
雙擊來到反匯編窗口,有個關鍵跳轉,往上查看影響跳轉的語句是test al,al,猜測al=0為未注冊,al=1為已注冊,再往上查看,call 0040714C決定al值,下斷跟進查看。
跟進“需進入1”,找到2個關鍵call
跟進“需進入2”和“需進入3”,發現函數里代碼相似
看來call 406F4B是關鍵,跟進后來到
最后一句為mov al,bl,這是改變al值的關鍵語句,修改為mov al,1后按F9運行程序,發現
保存到可執行文件后,運行程序
未注冊等信息已經不在了。
解密系列之OD使用教程10
程序:PC2AM2_PRO.exe
首先進行安裝,然后用PEID查看如下所示
可知該程序由VB編寫,所有的VB程序幾乎都是依賴于一個外部的動態鏈接庫。這個動態鏈接庫的名字是:MSVBVM60.dll(可能有多個版本,但名字都差不多~),然而正是因為VB中所有的API函數都在DLL中去實現,所以導致我們在跟蹤程序的執行代碼時頻繁地在DLL領空和程序領空跳來跳去。
VB程序破解關鍵
| __vbaVarTstEq | __vbaStrCmp |
| __vbaVarTstNe | __vbaStrComp |
| __vbaVarCompEq | __vbaStrCompVar |
| __vbaVarCompLe | __vbaStrLike |
| __vbaVarCompLt | __vbaStrTextComp |
| __vbaVarCompGe | __vbaStrTextLike |
| __vbaVarCompGt | |
| __vbaVarCompNe |
用OD載入,按下Ctrl+N打開模塊窗口,查找(直接輸入)vbaVarTstEq,找到后右鍵=>在每個參考上設置斷點,提示設置了88個斷點,按F9運行程序,在第一個斷點處斷下,繼續按F8單步執行,走到下面圖中位置
注釋里有一串類似注冊碼的字符,記錄下來,刪除所有斷點,在注冊編輯框里輸入,注冊成功。(簡單VB程序的注冊碼一般都可以用類似的方法找到)
解密系列之OD使用教程11
程序:fjprodsetup.exe
安裝程序,打開查看是未注冊版本,有功能限制。用OD載入,搜索所有字符串unregister,雙擊下面高亮一行
發現有跳轉,但修改跳轉之后只是去掉了標題欄的unregistered,并不能破解,關鍵還在于al的值
如圖,選中子程序第一行,提示窗口顯示本地調用來自4047D3、404880,在這兩個地址處下斷,去掉之前的斷點。按F9運行程序,在4047D3處斷下,去掉404880處的斷點,如下圖
在4047CD處下斷,重新運行程序,跟進發現這個call可能是程序加密驗證的過程,如下圖所示可進行修改并保存達到破解
的目的,但還可進行更深入的研究,進入驗證函數1和函數2對加密算法進行逆向,寫出注冊機,此處不再贅述,有能力者可聯系筆者進行交流。
解密系列之OD使用教程12——逆向后的Delphi特色
程序:Teksched.ex.
運行程序,有NAG窗口,需要注冊,用PEID查看是Delphi編寫的程序,用OD載入程序,留意Delphi程序與VC程序的區別。
搜索字符串registration,如下
雙擊第一行,來到
在高亮這行右鍵=>查找參考=>選定命令,有
雙擊第一行,又來到了原來的地方
在004A582C、004A5841處下斷,F9運行起來,點擊注冊窗口,輸入注冊信息,發現并不能斷下。得找其他突破口,向上瀏覽程序反匯編代碼,可以看到程序很有Delphi特色:
1、push 004A5841 retn,這兩條指令后會有jmp往前跳的指令,等價于 jmp 004A5841
2、存在很多call調用
繼續往上瀏覽,發現有輸入注冊碼提示信息,在上圖地方下斷
運行程序,輸入注冊信息,按Ctrl+F8執行,程序跑飛,斷在ntdll動態鏈接庫中,按“—”號回到程序領空,并在該call上一條指令處下斷,然后運行程序
將該call指令NOP掉,繼續執行,來到下圖
將高亮這行改為jmp 4A5608,繼續執行
將該條跳轉NOP掉,按Ctrl+F8繼續執行,最后來到最開始的位置如下
至此,程序完美破解
保存修改到文件后,重新運行程序進行驗證,完美破解。
總結
以上是生活随笔為你收集整理的Ollydbg使用教程学习总结(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux开机启动脚本(linux开机启
- 下一篇: Ollydbg使用教程学习总结(五)