我查閱了一下相關(guān)C#方面的資料,卻沒有發(fā)現(xiàn)有提供過關(guān)于api-hook方面的資
料包括應(yīng)用庫由此本人編寫一套inline-hook的庫用于支持x64、x86上的基于在
clr的公共語言,如: c#、c+/clr、vb.net 全部都可以使用該類庫改變底層api執(zhí)
行結(jié)果,如我們需要制作抓包工具,或者攔截某個ActiveX對象內(nèi)部調(diào)用的函數(shù)
用處廣泛 有些人在制作“截包”工具時是通過使用SPI,但也可以通過本技術(shù)實現(xiàn)

調(diào)用MessageBox.Show("Hello world", "Advapi32")時會跳轉(zhuǎn)到CB_MessageBox函數(shù)
MessageBox.Show()這個方法在下層中會調(diào)用MessageBoxW函數(shù),不信我們可以試
[csharp]view plaincopy試,上面的代碼執(zhí)行后結(jié)果與最上面的相同。本類庫提供分別需求.net 2 / 4的兩種
不同的類庫,基本滿足開發(fā)的需要 不過這一塊一直是C++方面的哦不過我相信以后
會是C#做這一塊,不過與其等到到時候再提供類庫 不如早些提供類庫,大家不需要
去研究我類庫中怎么去實現(xiàn)的,雖然類庫我稍微混淆了一下 不過你們要去學(xué)習(xí)也不
是很困難,不過我是懶得去討論在下層怎么實現(xiàn)的 DLL是沒有打入版權(quán)的信息,很
簡單你在屬性中看不到任何信息,除了一個內(nèi)部名稱之外沒有任何信息,所以你不
必擔(dān)心下面是解釋InlineHook中導(dǎo)出的函數(shù)接口及釋義。
InlineHook.GetProcAddress(string strLibraryName, string strMethodName) //取函數(shù)地址(庫文件,函數(shù)名)
InlineHook.GetProcAddress(System.Delegate d) // 取函數(shù)地址(有效委托)
InlineHook.Install(System.IntPtr oldMethodAddress, System.IntPtr newMethodAddress)// 安裝鉤子(源函數(shù)地址,新函數(shù)地址)
InlineHook.Resume()// 恢復(fù)鉤子
InlineHook.Suspend()// 掛起鉤子
InlineHook.Uninstall()// 卸載鉤子
Sample:
CAT(inline-hook) http://pan.baidu.com/s/1kTKjFPt // 示例地址含類庫
每個版本文件夾中都包含x86 / x64兩份不同的類庫,如果使用本類庫有疑惑的地方可以在本人下方留言。

新聞熱點
疑難解答