InlineHook & 原理與實現(xiàn)(3)
2021-12-22 17:53 作者:rkvir逆向工程學院 | 我要投稿

InlineHook又稱為內(nèi)聯(lián)Hook,正常的API函數(shù)調(diào)用流程應該是由調(diào)用者(進程)通過函數(shù)名去調(diào)用已加載動態(tài)鏈接庫中的導出函數(shù)。那么InlineHook的流程一般是在被調(diào)用API的頭部,插入插入跳轉(zhuǎn)指令的方式,劫持函數(shù)執(zhí)行流程。
下圖就是MessageBoxA的函數(shù)實現(xiàn):

那么,我們可以在頭部做出如下修改,進而實現(xiàn)HOOK:

上圖中的12345678就代指的是我們自己的函數(shù),通過這種方法劫持到我們的流程中執(zhí)行。下面,我們采用MessageBoxA的Hook作為例子,實際體驗一下InlineHook的實現(xiàn)方式。
首先,我們需要一個目標程序,代碼如下:

然后我們來看一下HOOK后的效果:
正常情況下:

HOOK后:

接下來,我們將使用代碼實現(xiàn)InlineHook,我這里采用的操作系統(tǒng)是Windows 10 20H2(19042.1288),集成開發(fā)環(huán)境采用的是Visual Studio 2017。
閱讀全文
??公眾號:極安御信安全研究院(即可獲得文章全部內(nèi)容)? ? ??
標簽: