资 源 简 介
VB 基于API HOOK拦截程序源码,演示VB如何拦截API呼叫,這是網友問的問題,雖然這個問題並不適合用VB做,但並不是做不到,要多繞一段路,這個問題重點在於執行檔中的IAT(Import Address Table) 如果你對於PE黨並不熟悉 請參考PE檔簡介。一個Process再執行時,會將許多DLL載入到行程空間中,如呼叫User32.dll中的MessageBoxW就必須將User32.dll載入到位址空間,呼叫越多不同種的API,位址空間中的模組也就越多,至於如何得知行程所載入的模組請參考如何取得Process中載入的模組的資訊。
一般來說,如果是執行Notepad.exe 我們只要攔截模組Notepad.exe的IAT即可,除非你想攔截Notepad.exe是否有透過其他DLL去執行要攔截的函數,才需要去攔截其他載入的模組,這個程式整個攔截的過程如下:
1.在要攔截的程式上配置2塊記憶體空間,一塊用來放要攔截的程式,一塊用來放所需要用的區域變數 至於如何再外部程式配置記憶體請參考如何在外部程式配置記憶體
AddressOfRemoteFunction=CreateRemoteMememory(SomeProcess,FunctionSize)
AddressOfVar=CreateRemoteMememory(SomeProcess,DataSize)
2.將要注射的函數寫到配置的位址空間 並初使化變數
Call WriteCodeTo(AddressOfRemoteFunction)
[AddressOfVar]=1
[AddressOfVar+256]=Old_FunctionAddress
3.修改IAT位址到新配置的函數