五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

分享到微博請遵守國家法律
武汉市| 屏边| 龙岩市| 新民市| 留坝县| 瓮安县| 陇南市| 盘山县| 香港| 景宁| 灵丘县| 余姚市| 湟中县| 交口县| 高青县| 瓮安县| 尼木县| 固始县| 鄂尔多斯市| 壤塘县| 嵊泗县| 刚察县| 金湖县| 三明市| 绍兴县| 通河县| 新巴尔虎左旗| 扬中市| 肇州县| 南宫市| 佛山市| 丰台区| 应城市| 长白| 女性| 龙山县| 新营市| 怀远县| 昌黎县| 淮南市| 阜宁县|