日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

64位内核第一讲,和32位内核的区别

發布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 64位内核第一讲,和32位内核的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

          64位內核第一講,和32位內核的區別

雙擊調試配置請查看?連接:?https://www.cnblogs.com/aliflycoris/p/5877323.html

一丶編譯的區別.

首先,還是使用WDK7.1.7600編寫.?但是編譯的時候,要使用x64來編譯.?其代碼框架不變.

1.驅動加載

  驅動加載的程序還是使用普通的驅動加載即可.但是64位(win7),微軟推出了兩種新的方式.

1.DSE

2.KPP

  DSE:?這個機制是?驅動強制簽名,也就是說你編寫的驅動,都要進行簽名.才可以加載.

  KPP:?內核補丁保護,?比如我們說的SSDT表,(ring3 -> ring0?中專表)在XP下是可以HOOK的,現在,這些都被保護了,只要你更改了系統的核心源碼,直接藍屏.

2.去掉KPP保護.

在編寫的64為內核驅動,?如果我們的系統是安全模式啟動,則沒有DSE保護.也就是說不用簽名.

現在有工具可以直接去使用.

第一個選項是,點擊之后,你的系統啟動則是在安全模式啟動.

第二個選項是,?點擊之后,你的驅動可以添加一個測試簽名.

?

3.注意的問題

如果進行了上面來了兩個步驟,我們的驅動還是不能加載,那么這也是一個坑.?微軟說了,在PE文件中,你的驅動必須有簽名檢查.

正確的姿勢:

  首先,編寫驅動的source文件加上命令行選項.

  LINKER_FLAGS = /INTEGRITYCHECK

且必須放在最下面,?加了這個選項,那么你的驅動,可以使用微軟提供的HOOK函數了.

?

二丶64位GDT表

?

?

?首先,地址變大了,變成了48位的地址,其高位是FFFF,屬于是符號擴展.

IDT?也是變大了.

其內核中的結構體也變大了.

不光這個結構體,還有里面的,有興趣的自己解析一下查看.

三丶SSDT表的尋找,以及SSDT加密

我們知道?ring3 -> ring0?會通過SSDT表進行中專,

其EIP?會存放在?msr寄存器中.? xp下是174 175 176

現在查看AMD的CPU指令,會發現.?進0環會調用SystemCall命令.

其MSR寄存器是在 C0000081? C0000082 C0000083

其EIP會存放在82里面.

那么我們可以?使用指令.

rdmsr C0000082

讀取三環進0環的地址.?對其解析.

?

因符號文件沒有下載完全.所以還暫時沒有辦法解析.

SSDT加密算法是?模塊首地址 +?當前表中的地址>>4? .我們要計算地址的時候.只需要將SSDT表中的內容的函數地址<<4位加上模塊首地址即可.

?

轉載于:https://www.cnblogs.com/iBinary/p/8395870.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的64位内核第一讲,和32位内核的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。