日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点

發(fā)布時間:2024/7/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

小甲魚 OllyDbg 視頻教程:https://www.bilibili.com/video/av6889190?p=21

程序下載地址:https://pan.baidu.com/s/1A4-BDgbdUgy-cmI4IMMzYw ? ?提取碼:jsdv

?

?

開始,按照慣例,首先用?PEiD?打開,看下是什么語言編寫的程序:

可以看到是?VC6.0 。載入程序,然后運行程序,當(dāng)出現(xiàn)?neg?窗口時,暫停程序,然后查看調(diào)用堆棧:

對應(yīng)代碼位置打上斷點:

重新載入程序,運行,發(fā)現(xiàn)程序斷點到斷點位置,按 F9?運行,neg?窗口出現(xiàn),等一會消失,發(fā)現(xiàn)程序運行到斷點位置的下一行,說明斷點位置正確,這個就是出現(xiàn)?neg?窗口的位置。

現(xiàn)在既然找到斷點位置,常規(guī)做法是?直接?nop?掉這個call?調(diào)用,現(xiàn)在可以 nop掉保存程序,然后運行,發(fā)現(xiàn)不是想要的結(jié)果,說明不能直接?nop。

再重新載入原來的程序,按?F9?發(fā)現(xiàn)程序的三個窗口都是通過這個?call?調(diào)用來顯示的,然后往上看,發(fā)現(xiàn)一個?je?跳轉(zhuǎn),這個可以控制 call?調(diào)用是不是顯示窗口,所以就相當(dāng)于一個?if else ,這里要顯示最后一個窗口?所以就相當(dāng)于等于 2?時跳轉(zhuǎn),

可以找一塊程序自身不用的內(nèi)存空間來寫入內(nèi)聯(lián)補丁。點擊?m ,查看程序的?PE?映射:

雙擊?data?段,進入?data?段,找到?jīng)]有使用位置,下一個硬件寫入斷點,測試要是用的位置在程序運行時有沒有使用,如果在程序運行?的時候使用的那個位置,就按上面方法再找一個位置。然后繼續(xù)測試,直到找到程序在運行時不會使用的位置:

下完?硬件寫入斷點后,重新載入程序,測試要寫入數(shù)據(jù)的位置是否可用(?也就是程序在運行的時候不會往這個位置寫入數(shù)據(jù)?),這個示例中程序不會寫入數(shù)據(jù),這個位置可用。

找到要寫入?內(nèi)聯(lián)補丁的位置:

在要寫入的位置添加書簽,方便通過 右鍵 ->?書簽?直接跳轉(zhuǎn):

在?je?位置添加書簽:

以前是通過手動跳來跳去直接改匯編代碼,現(xiàn)在可以通過插件?NonaWrite?來寫?內(nèi)聯(lián)補丁的 匯編代碼:

開始寫?內(nèi)聯(lián)補丁的匯編代碼:

完成后,內(nèi)聯(lián)匯編?代碼:

現(xiàn)在開始?改?je?跳轉(zhuǎn):

保存所有修改。然后運行修改后的程序,發(fā)現(xiàn)已經(jīng)成功,只有?第二個?neg?窗口:

原程序運行后有3?個?neg?窗口

至此,逆向成功。

可以載入修改后的程序,按?F8?單步調(diào)試追蹤修改后的程序執(zhí)行流程

?

?

?

總結(jié)

以上是生活随笔為你收集整理的小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。