Ollydbg使用教程学习总结(五)
解密系列之OD使用教程17——inline patch
程序:ReverseMe. NAGs.exe
新內容:硬件斷點
用PEID打開,看到程序是用VC6.0寫的,用OD載入,按F9運行后,出現NAG窗口,在OD中按下暫停,再打開堆棧窗口
如上圖高亮行正是調用NAG窗口的call,雙擊來到反匯編窗口并下斷
重新運行程序,發現程序的3個窗口都是對話框,且都來自這個call,因此不能直接將該指令NOP掉。繼續往上瀏覽,發現有je跳轉語句,只要讓第1次和第3次跳轉實現,第2次跳轉不實現即可。
在數據段00445E80的位置定義個變量作為計數器,在這個字節下硬件寫入斷點進行測試,看程序在運行過程中有沒有改動該地址處的內容,發現程序并不會修改,可行。在該跳轉指令下斷,在00437D70地址處添加個書簽,方便來回查看。但此處直接用NonaWrite 1.2插件進行修改,打開插件,輸入
然后點擊“匯編”按鈕即可修改完成。
再講該條指令修改如下
進行保存到文件即可。
解密系列之OD使用教程18
程序:Urlegal.exe
新工具:FishcOD、eXeScope.exe(可進行資源的修改)
首先安裝程序,再用eXeScope載入程序
得到退出時彈出的NAG窗口的模板名是103(0x07),由以下2個函數可知
在OD里查找push 0x67
往上查看,這個過程并不是破解的關鍵,因為沒有關鍵跳轉,因此回溯到調用該過程的位置,由提示窗口
轉到調用處,查看
如上圖注釋所示,在關鍵call下斷并重新運行程序,跟進發現該過程非常短,猜測可能是程序驗證是否注冊的過程,在開始處下斷,重新運行程序;如果是的話,程序運行開始就會執行該過程以檢測是否注冊。
如猜測,程序運行后在此斷下,現在只需要將eax的值修改為1即可,但僅修改
00403E22 |. 8B40 2C mov eax,dword ptr ds:[eax+0x2C]這條指令的話,將覆蓋掉后面的一條指令,因此可以直接同時修改2條指令
00403E1F |. 8B45 FC mov eax,[local.1] 00403E22 |. 8B40 2C mov eax,dword ptr ds:[eax+0x2C]修改后保存到可執行文件,運行測試,發現注冊按鈕已經變成灰色,點擊關閉按鈕也不會彈出NAG窗口。
解密系列之OD使用教程19
程序:movgear.exe
運行程序,點關閉按鈕后,彈出NAG窗口,出現試用還剩30天等信息。同上一節課所講,用eXeScope載入程序,找到該NAG窗口的模板名為100(0x64),用OD載入,查找push 0x64指令。
在每個命令下斷,如上,運行程序并關閉后斷下的地方才是我們關注的地方,地址為00406725,刪掉其他斷點;往上瀏覽程序,發現有關鍵跳轉和call。
在該call和跳轉處下斷,重新運行程序并關閉,斷下,跟進
RegOpenKeyEx:打開注冊表的鍵值。
edx為倒數第2個參數,指向數據緩沖區。繼續往下瀏覽程序,發現在獲取了注冊表信息后,可能將用戶名和密碼壓棧,然后調用關鍵call進行檢測
最后,如果驗證失敗的話,會跳到過程的結尾
觀察程序,eax的值最終來源于ebx,因此可將該指令
mov eax,ebx修改為mov eax,1
但是經測試,這樣修改會覆蓋后面的指令,因此可修改為
mov al, 1即可爆破。
解密系列之OD使用教程20
程序:KeygenMe.exe
DialogBoxes類型常用APIs(通常在注冊界面獲取)
該程序是一個注冊機程序,用的是GetDlgItemTextA來獲取輸入的文本,用OD載入,鍵入命令 bp GetDlgItemTextA下斷,輸入用戶名、密碼:Ontrd、1234567,點擊Check,在動態鏈接庫中斷下,再按下Alt+F9回到用戶領空。
待續。。。
總結
以上是生活随笔為你收集整理的Ollydbg使用教程学习总结(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天下安卓和苹果能一起玩吗(天下安卓)
- 下一篇: 国际货运代理企业备案表在哪里办理(国际货