国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
崇阳县| 凤台县| 响水县| 石门县| 宁陕县| 桂林市| 云浮市| 永顺县| 武隆县| 惠东县| 安乡县| 稻城县| 泰顺县| 贵南县| 疏勒县| 余干县| 开阳县| 射阳县| 抚宁县| 淮滨县| 溧阳市| 上林县| 平武县| 武鸣县| 安多县| 临安市| 阳泉市| 中阳县| 连州市| 陆河县| 宣恩县| 昆明市| 景谷| 乾安县| 吴江市| 滦平县| 阿鲁科尔沁旗| 鄂托克前旗| 沂南县| 旌德县| 海丰县|