最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

小甲魚 OllyDbg 教程系列 (十一) : inline patch ( 內(nèi)嵌補丁 )

2022-08-24 11:50 作者:限量版范兒  | 我要投稿


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

程序下載地址:https://pan.baidu.com/s/1u6SWgx83VWDwitNzxT2OXg?? ?提取碼:if41?

PEiD 查殼工具:https://pan.baidu.com/s/1iNS4UlBvmXCxaj5a-AFupw?? ?提取碼:79z5?

?

?

前言

?

inline patch “內(nèi)嵌補丁” 指在程序文件中把補丁代碼寫入文件里面達(dá)到 PJ 的目的。

例:
原程序:??mov eax, dword ptr [ebp+8]????3個字節(jié)
想改為:??mov eax, 4????????????????????5個字節(jié)
若如此修改,會產(chǎn)生溢出,覆蓋了下面的指令

所以要采用內(nèi)嵌補丁的方式:

1. 找程序的空白區(qū)間,寫入自己需要的指令(mov eax, 4),以及會被覆蓋的指令
2.將原來的指令(mov eax, dword ptr [ebp+8])改為 jmp XXXXXX(補丁的地址)(這個操作也會覆蓋后面的內(nèi)容)
3.在補丁最后加上 jmp XXXXXXX(原程序后面的內(nèi)容的地址),跳出補丁,返回主程序

?

?

開始

?

首先用?PEiD?查看,可以看到是?VC6.0?寫的程序:

然后用?OD?載入程序,按?F9?運行,程序運行,然后隨便輸入注冊:

發(fā)現(xiàn)程序界面沒什么反應(yīng),現(xiàn)在輸入注冊碼,不要點擊?OK。打開?OD ,按下 Ctrl + n ,輸入?killtimer,查找?KillTimer

,右鍵 -》?在每個參考上設(shè)置斷點

為什么要在?KillTimer?上設(shè)置斷點呢?通過觀察發(fā)現(xiàn)了,KillTimer?實現(xiàn)了類似C語言的?switch?case?的效果

點擊?cmp?eax, 3 ,在數(shù)據(jù)窗口可以看到?是從哪個位置跳轉(zhuǎn)過過來的,然后右鍵?轉(zhuǎn)到?上級調(diào)用地址,按這種方法直到回溯到程序的開頭

回溯到?程序頭,即switch?case ,然后加上斷點

在向上看程序,函數(shù)的開頭加個斷點:

重新載入程序,讓程序在函數(shù)開頭的位置斷下來,按?F8?單步調(diào)試,觀察?eax?的值的變化:

解釋:

所以就需要用到 內(nèi)嵌補丁?來進(jìn)行修補。什么是內(nèi)嵌補丁,就是在程序中沒用的內(nèi)存空間寫入補丁。因為程序在內(nèi)存中都是需要內(nèi)存對齊的,所以有些沒用的空間都是用 0?來填充進(jìn)行對齊,可以在這些地方寫入補?。ㄟ@里寫入地址為 5E47D0):

快速定位技巧:設(shè)置書簽

記住位置或者設(shè)置書簽,復(fù)制被覆蓋的匯編代碼:

原來位置的修改:

跳轉(zhuǎn)到要寫入內(nèi)嵌補丁的位置,開始寫入補?。?/p>

?

粘貼被覆蓋的代碼,然后再跳轉(zhuǎn)到原來的位置:

保存修改,然后運行程序,發(fā)現(xiàn)程序一直死循環(huán)。說明程序還有問題,沖洗載入程序,單步調(diào)試,當(dāng)程序運行到?cmp eax,4?時,更改?ZF?標(biāo)志位,讓程序跳轉(zhuǎn)實現(xiàn),然后繼續(xù)調(diào)試,發(fā)現(xiàn)當(dāng)程序?執(zhí)行?cmd eax,0B?時,程序正常。所以修改補丁位置?mov eax,4?位?mov eax, 0B

保存程序,然后運行程序,發(fā)現(xiàn)程序正常。

說明:當(dāng)程序 mov?eax,4?時,驗證成功,但是驗證成功后還的?mov eax,0B?跳出循環(huán),所以當(dāng)?mov eax,4?時,雖然驗證成功,但是沒有跳出循環(huán),所以一直跳出窗口。

鏈接:https://www.dianjilingqu.com/496841.html

小甲魚 OllyDbg 教程系列 (十一) : inline patch ( 內(nèi)嵌補丁 )的評論 (共 條)

分享到微博請遵守國家法律
涟源市| 青州市| 麻阳| 九寨沟县| 襄汾县| 阿拉善右旗| 佛山市| 玉环县| 长春市| 惠东县| 奉贤区| 逊克县| 广西| 大连市| 塘沽区| 庆阳市| 湄潭县| 临朐县| 通江县| 新巴尔虎右旗| 西城区| 澄迈县| 高邮市| 淳化县| 汝南县| 通辽市| 武隆县| 阿坝| 封丘县| 祁门县| 瑞丽市| 阿鲁科尔沁旗| 南木林县| 潍坊市| 宁陕县| 抚远县| 济阳县| 仁寿县| 基隆市| 岱山县| 定陶县|