Ollydbg使用教程学习总结(二)
解密系列之OD使用教程4
程序1:RegisterMe.exe
把程序跑一遍之后我們發現程序有兩個NAG,一個是在程序界面啟動前出現,另一個是在程序關閉后出現的。
去掉第一個Nag方法如下:
①jmp跳過
②全部nop掉
③令hOwner參數為1,push 1,使其父句柄無意義
④更改入口地址為401024
雙擊這一行
將下面一行中AddressOfEntryPoint的值改為1024,如下圖
具體在數據窗口中定位到4000E8,按下空格鍵進行修改
同理,可去掉第二個NAG窗口。
解密系列之OD使用教程5
程序2:RegisterMe.Ops.exe
用OD加載,提示
打開內存頁,看到PE頭的大小為0x5000,雙擊進行查看;找到以下幾個地方,發現數值大得離譜,修改正確即可
解密系列之OD使用教程6
安裝程序:pixtopianbook107.exe
安裝后,打開軟件,標題欄顯示UNREGISTERED VERSION,About對話框顯示Unregistered version v1.07
發現只能建立3個組,每個組只能添加4個聯系人。
點擊Add后,彈出對話框,返回OD按下暫停,按Alt+F9執行到用戶代碼,此時左上角提示“返回到用戶”,回到軟件按下確定,程序斷下。
直接jmp掉,保存文件,即可突破聯系人數只能為4的限制。
同理,跳過增加組的限制,如下
在內存窗口,按下Ctrl+B查找字符串,在Unicode字符查找框中輸入UNREGISTERED VERSION點擊查找,即可在4D4830地址處找到該字符串,進行修改;繼續搜索,在4D570E、4E4BE8處找到,修改并保存;在ASCII字符查找框中輸入this is an…,在48F974處找到,修改成This is an registered version,然后按同樣的方法保存文件。
數據窗口中轉到48F974,在第一個字節右鍵=>查看參考,找到引用所在,雙擊來到反匯編窗口
使得該處直接跳轉,并保存,至此破解結束。
解密系列之OD使用教程7
程序:VisualSit. Design...exe
調試寄存器:Dr0~Dr3四個寄存器用來存放中斷地址,Dr4、Dr5保留不使用,Dr6、Dr7用來記錄Dr0~Dr3的屬性。
運行程序,發現有NAG窗口,且有次數限制,退出時有廣告窗口。
去NAG窗口
調試技巧:一路按F8,遇到產生NAG的call時,在該call下斷點;重新載入,運行,然后在剛才斷點斷下,F7進去,刪除斷點;繼續F8找下一個使NAG出現的call,依次操作,直到找到最終call出NAG 地方,需要注意的是,如果call在動態鏈接庫即系統領空時,只能下硬件斷點,方法是:右鍵=>斷點=>硬件執行。最終找到如下地方
將該call直接反匯編為mov eax,1即可去掉NAG窗口。
去廣告窗口。
廣告窗口彈出后,在OD中按下暫停,然后點擊K(堆棧)窗口,如下
在圖示的480C24處是唯一該軟件所在領空,雙擊回到反匯編窗口,下斷點重新運行并關閉軟件,斷下
按下F8,彈出廣告,說明nop掉該call即可。
破解萬能鑰匙
根據代碼試用期和到期后走向不同,找到關鍵所在。在關鍵跳轉出標出Y或者N,然后用完使用次數,重新找出是哪個跳轉有所變化,把變化了的跳轉進行如下修改即可
test eax,eax jle 00489998 => mov eax,1解密系列之OD使用教程8
程序:pcsurg*on.exe
方法一
運行程序,同樣有NAG窗口,關閉后進入主窗口,顯示為未注冊版本且5 days remaining,關于窗口中也顯示未注冊版本,且要求輸入注冊碼等。
用OD載入,以標題欄的<unregistered為切入點,右鍵=>查找=>所有參考文本字串,來到文本子串窗口(R窗口),拉到最上面右鍵=>查找文本,輸入<unregistered,結果如下
雙擊上面高亮行,來到反匯編窗口
在該行上面的跳轉處和子程序的開頭處下斷點,重新載入程序并運行,發現斷在該跳轉處,跳轉未實現,修改ZF標志位使跳轉實現,按F9發現NAG窗口不再彈出且標題欄未注冊的信息消失,但是關于窗口仍有未注冊信息,尚未完全破解。根據About窗口
繼續找這個字符串<Unregistered Version>,發現并不能找到,重新查找<Unregister,找到如下位置
在這個跳轉處和程序入口點下斷,F9運行程序,繼續在5CC83C處修改ZF標志位使得跳過,然后按下Help=>About觸發剛才下的斷點,單步走到下圖處
同理修改ZF標志位使得跳轉實現,按F9運行起來
彈出關于對話框為已注冊版本,且注冊按鈕消失了!根據以上調試結果,接下來把兩處的jnz跳轉改為jmp,并保存到文件,運行驗證可知已完成破解。
方法二
繼續深入思考,載入原程序,觀察原來的斷點處
為什么需要2個判斷?可能是是否注冊信息和試用天數。對可疑地址60EB8C進行跟蹤,右鍵=>查找參考=>地址常量,找到如下
可能對改地址值初始化的地方就是設置注冊信息的地方,如上圖對每個指令設置斷點,重新運行程序,斷下
觀察這段代碼,發現這是在程序開始運行不久就將al的值賦值給[60EB8C],然后和0進行比較,如果不為0則跳轉實現,猜測al中可能存放的是程序是否注冊的標志,因此直接將1賦值給它,查看是否能夠直接破解,如圖
保存到可執行文件,運行查看,完美破解。另一種方法是作如下修改
顯然方法二更加高效,但是需要仔細分析程序代碼的邏輯關系,難度較大,值得深入思考學習該種方法。
總結
以上是生活随笔為你收集整理的Ollydbg使用教程学习总结(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux找回删除的文件(linux恢复
- 下一篇: Ollydbg使用教程学习总结(三)