Windows 64位驅動編程基礎

來源:互聯網
上載者:User

標籤:環境   網站   資料   order   外掛技術   settings   時間   view   而且   

 

 

         新的開始: 目標是win64驅動編程與rootkit, 外掛技術從32bit到64bit的. Windows漏洞分析與挖掘, php代碼審計

 

 

 

Win64編程

32位系統逐漸淘汰,轉到64位編程相當重要. 但苦於64位驅動編程網上的資料比較雜亂

這裡打算寫寫關於64位驅動編程的內容,當然大部分內容都是從網上搜集過來的,然後彙集到一起好用來學習.

 

  1. 準備

 

雙機調試, 載入驅動工具,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

重啟即可.

 

  1. 代碼

對於ULONG 在64編譯時間自動轉為ULONG64

如果是ULONG_PTR 則編譯器自動幫我們轉換

無類型指標使用PVOID64.

通過KdPrint列印時, %x不用而用%p .

從xp到windows7 64位      像EPROCESS等結構體也有變化,通過windbg可以查看比較.

 

對於驅動代碼來說, 因為那些資料類型都有2個版本:以32結尾和以64結尾,它通過在不同環境編譯時間自動轉到目標類型

 

  1. 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位驅動編程基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.