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

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

HotFixHook & 原理與實現(xiàn)(2)

2021-12-21 18:59 作者:rkvir逆向工程學院  | 我要投稿


作者?| 榴蓮

編輯?| 楌橪

?HotFixHook也可以稱為熱補丁,這種HOOK方法本質(zhì)上與InlineHook沒有什么區(qū)別,但是它的效率更高,之所以這樣,是因為HotFix的指令替換原理與Inline不同。InlineHook因為占用了函數(shù)頭至少5個字節(jié)的空間,所以這種方式是影響函數(shù)正常運行的,如果需要在HOOK函數(shù)中調(diào)用原有的執(zhí)行流程,那么就必須在調(diào)用原有流程之前卸載掉HOOK,也就是將被替換的字節(jié)碼還原。而當退出之前如果想要繼續(xù)接管這個函數(shù),那么又需要將HOOK代碼再次替換掉。那么一來二去,每次調(diào)用HOOK函數(shù)都需要摘一次掛一次HOOK,造成了很大的資源浪費,導致效率降低。而HotFix采取了另外的替換思路。例如說MessageBoxA原有的函數(shù)實現(xiàn)是下圖這樣的:

如果是InlineHook,那么就會直接替換5個字節(jié),變成下圖這樣:

而HotFixHook采取另外的思路,因為根據(jù)上面的第一張圖可以發(fā)現(xiàn),函數(shù)頭的位置是8BFF,也就是mov edi,edi,這種代碼本身在函數(shù)中并沒有起到任何作用,也就說,即使破壞了這句硬編碼,但是只要從函數(shù)地址加二的位置上開始執(zhí)行,依然不影響函數(shù)的正常功能,也因此,我們可以將這兩個字節(jié)替換成EB F9,也就是一個短跳指令,如下圖:

此時我們就可以在75E034CB的位置往下數(shù),此處地址距離函數(shù)頭正好有5個字節(jié)的空間,那么我們就可以將JMP ADDRESS的指令放到這5個字節(jié)里。完成流程劫持的目的,并且,如果我們需要調(diào)用原始函數(shù),只需要跳過短跳即可。修改完成后如下圖:

下面,我們采用MessageBoxA的Hook作為例子,實際體驗一下HotFixHook的實現(xiàn)方式。

首先,我們需要一個目標程序,代碼如下:

然后我們來看一下HOOK后的效果:

正常情況下:

HOOK后:

接下來,我們將使用代碼實現(xiàn)HotFixHook,我這里采用的操作系統(tǒng)是Windows 10 20H2(19042.1288),集成開發(fā)環(huán)境采用的是Visual Studio 2017。

??公眾號:極安御信安全研究院? ? ? ?閱讀全文(更多免費知識分享)

HotFixHook & 原理與實現(xiàn)(2)的評論 (共 條)

分享到微博請遵守國家法律
沁阳市| 克东县| 哈巴河县| 双鸭山市| 曲阳县| 固原市| 孝义市| 惠东县| 东阿县| 犍为县| 光山县| 滕州市| 锦州市| 县级市| 临泉县| 河西区| 汶上县| 常州市| 双峰县| 远安县| 广安市| 白山市| 呼和浩特市| 延边| 呼和浩特市| 四川省| 伊通| 厦门市| 和政县| 峨边| 依兰县| 应用必备| 陈巴尔虎旗| 丰台区| 城市| 文山县| 叶城县| 新宾| 松原市| 来安县| 富阳市|