時光機

2009年7月18日 星期六

透過修改內存頁表 隱藏Hook

我最近有一種想法 可以用來隱藏需要修改內存之類的Hook 如SSDT Hook 而不被Anit Rookit工具發現

主要原理是修改需要Hook的進程的PDE PTE表,把原本的虛擬位址對應到我Hook過的物理位址

由於每個進程的頁表都不一樣(包括System) 所以如果我只改某個進程的頁表 System或Anti Rookit的頁表並不會被更改 也就看不到我改過的物理內存 我的測試是用修改前五個字節的方式對notepad作Inline Hook NtCreateFile

由於NtCreateFile所在的頁是4M的Large Page 所以我先建一個PTE頁表 每個頁為4K 對應的物理位置為原本的物理內存(這個動作應該是多餘的)

然後在得到NtCreateFile所在的4K頁 把這個頁Copy一份到別的位址 並且把我建的頁表中這頁的物理位址指向Copy出來的那頁,修改Copy出來的那頁 作Inline Hook

最後修改notepad的PDE 把他指向我建立的PTE頁表

測試結果 如果直接Inline Hook NtCreateFile GMER這個工具可以輕鬆檢測
修改後 就隱藏成功了

沒有留言:

張貼留言

自動搜尋器

關於我們