標籤:環境 網站 資料 order 外掛技術 settings 時間 view 而且
新的開始: 目標是win64驅動編程與rootkit, 外掛技術從32bit到64bit的. Windows漏洞分析與挖掘, php代碼審計
Win64編程
32位系統逐漸淘汰,轉到64位編程相當重要. 但苦於64位驅動編程網上的資料比較雜亂
這裡打算寫寫關於64位驅動編程的內容,當然大部分內容都是從網上搜集過來的,然後彙集到一起好用來學習.
- 準備
雙機調試, 載入驅動工具,debgview工具, win10重啟後禁用驅動簽名. 重啟後載入驅動
雙機調試:
在win7虛擬機器關機狀態添加一個基於具名管道的串口,然後設定另一端時應用程式,然後
執行下面命令
64系統開始有個驅動簽名機制,沒有通過微軟簽名的驅動無法載入, 我們調試時需要禁用它.
開機按f8後有個禁用驅動簽名啟動選項, 選擇它啟動即可.
bcdedit /dbgsettings serial baudrate:115200 debugport:1 (最後的1表示虛擬機器中設定的com1)
bcdedit /copy {current} /d debug (記住這裡返回的id號,下面用到)
bcdedit /displayorder {current} {ID} 這裡的ID設定為第2條命令返回的id
bcdedit /debug {ID} ON 這裡的ID設定為第2條命令返回的id
重啟即可.
- 代碼
對於ULONG 在64編譯時間自動轉為ULONG64
如果是ULONG_PTR 則編譯器自動幫我們轉換
無類型指標使用PVOID64.
通過KdPrint列印時, %x不用而用%p .
從xp到windows7 64位 像EPROCESS等結構體也有變化,通過windbg可以查看比較.
對於驅動代碼來說, 因為那些資料類型都有2個版本:以32結尾和以64結尾,它通過在不同環境編譯時間自動轉到目標類型
- Patchguard
說白了,就是微軟為了讓系統更安全, 不能隨隨便便就能hook和inline,不能隨隨便便就能通過修改EPROCESS來隱藏進程.
這傢伙每隔一段時間對系統關鍵檔案,記憶體地區進行CRC校正,發現不對立刻進行0x109藍屏.
而且它自己藏在記憶體中不好通過解決它來繞過patchguard.
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x109---critical-structure-corruption
上面的網站有列出的被其保護的內容.
未完待續.......
Windows 64位驅動編程基礎