驅動開發實現修改導入表注入dll

導入表注入dll其實就是給程序的導入表添加一個dll和相應函數,程序在被載入時,系統會自動加載該dll,從而實現dll注入。

我在驅動實現修改導入表的方法就是使用PsSetLoadImageNotifyRoutine函數創建回調,在回調中修改導入表。

修改導入表的過程如下:

1,申請一塊內存,將原來的導入表和自己添加的項拷貝到這塊內存。

2,修改pe頭的導入表偏移,使其指向新導入表。

經過以上修改還不夠,仍有部分程序不能正常運行,或不能成功注入dll。

原因如下:

1,程序有綁定導入表,就直接使用了,從而沒有加載你的dll。解決辦法就是清空綁定導入表。

2,有的編譯器編譯的程序沒有IAT的偏移與大小,此時系統會檢查導入表的範圍,因爲你申請的內存在pe範圍之外,系統出錯。所以解決方法就是自己填充IAT,使其指向原來的導入表位置。

3,另外,在修改pe時要去除寫保護,此時需要修改先前模式。

代碼見http://download.csdn.net/detail/uncia_me/9717160

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章