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