IAT鉤子主要使用的IAT表進行API HOOK
加殼會使原有的導入表被加密,導致無法直接通過修改導入表來Hook API,如下圖, 使用UPX加殼後,計事本程序,的很多項導入表不見了.
此類軟件加殼後將導至IAT鉤子失效,導致無法完成相應的API HOOK
解決方法一, 強行搜索進行空間,進行比對,發現是自己所要鉤取的API地址進行替換(穩定性極差)
解決方法二 , 看官繼續往下看
UPX加殼後程序調用API的過程,看圖
看對應的地址:0x271128
看左下角數據的地址中的東西,有沒有感覺,這就像是一個地址列表.沒錯這個就是所有的API地址, 我把它叫做私有導入表
私有導入表的結構,就像是一個數據,裏面記錄着API函數的地址,每個地址佔一個DWORD,
即然爲私有導入表,意思就是說,替換掉這個私有導入表後,即實現了Hook
那麼下面看怎麼獲取私有導入表的起始位置
在數據列表中,一直向上滾動,看到的地址是 00271000
查看notepad的內存
看到沒有.段名爲"UPX0"的段起始位置,和剛查到的私有導入表的地址一致.
即然一致,那說明,地址的對應關係就在這裏.
即方法二爲: 首先找到分析PE結構,尋找段"UPX0"的起始地址,通過遍歷,尋找,替換需要Hook的API地址,