• 北京:010-51292078 上海:021-51875830
    西安:029-86699670 南京:4008699035
    成都:4008699035 武漢:027-50767718
    廣州:4008699035 深圳:4008699035

    課程表 聯系我 在線聊 報名 付款 我們 QQ聊 切換寬屏
            Windows內核修練與內核安全培訓班
       班.級.規.模.及.環.境
           堅持小班授課,為保證培訓效果,增加互動環節,每期人數限3到5人。
       上課時間和地點
    上課地點:【上!浚和瑵髮W(滬西)/新城金郡商務樓(11號線白銀路站) 【深圳分部】:電影大廈(地鐵一號線大劇院站)/深圳大學成教院 【北京分部】:北京中山/福鑫大樓 【南京分部】:金港大廈(和燕路) 【武漢分部】:佳源大廈(高新二路) 【成都分部】:領館區1號(中和大道) 【沈陽分部】:沈陽理工大學/六宅臻品 【鄭州分部】:鄭州大學/錦華大廈 【石家莊分部】:河北科技大學/瑞景大廈 【廣州分部】:廣糧大廈 【西安分部】:協同大廈
    最近開課時間(周末班/連續班/晚班):
    Windows內核開班時間:2021年9月6日(請抓緊報名)
       實驗設備
            ☆資深工程師授課
            
            ☆注重質量
            ☆邊講邊練

            ☆合格學員免費推薦工作


            專注高端培訓17年,曙海提供的課程得到本行業的廣泛認可,學員的能力
            得到大家的認同,受到用人單位的廣泛贊譽。

            ★實驗設備請點擊這兒查看★
       .最.新.優.惠.
           ◆在讀學生憑學生證,可優惠500元。
       .質.量.保.障.

            1、培訓過程中,如有部分內容理解不透或消化不好,可免費在以后培訓班中重聽;
            2、培訓結束后免費提供半年的技術支持,充分保證培訓后出效果;
            3、培訓合格學員可享受免費推薦就業機會。

                   Windows內核修練與內核安全培訓班

    第一階段

    1. windows系統服務
    1.1 windows系統服務原理
    1.1.1 intel x86的用戶模式-內核模式切換
    1.1.2 windows的用戶模式-內核模式切換
    1.1.3 windows中的系統服務分發
    1.1.4 增加系統服務表或表項
    1.2 lpc(本地過程調用)服務
    1.2.1 lpc結構模型
    1.2.2 lpc端口和lpc消息
    1.2.3 lpc通訊模型的實現
    1.2.4 lpc應用
    1.3 命名管道(named pipe)服務
    1.3.1 命名管道的名稱解析
    1.3.2 命名管道的通訊模型
    1.3.3 命名管道的實現
    1.4 郵件槽(mailslot)服務
    1.4.1 郵件槽的名稱解析
    1.4.2 郵件槽的通訊模型
    1.4.3 郵件槽的實現
    1.5 sdt顯示工具sdtviewer
    1.5.1 sdtviewer使用介紹
    1.5.2 sdtviewer實現原理

    2. 內核編程環境及其特殊性
    2.2.1 內核編程的環境
    2.1.1 隔離的應用程序
    2.1.2 共享的內核空間
    2.1.3 無處不在的內核模塊
    2.2 數據類型
    2.2.1 基本數據類型
    2.2.2 返回狀態
    2.2.3 字符串
    2.3 重要的數據結構
    2.3.1 驅動對象
    2.3.2 設備對象
    2.3.3 請求
    2.4 函數調用
    2.4.1 查閱幫助
    2.4.2 幫助中有的幾類函數
    2.4.3 幫助中沒有的函數
    2.5 windows的驅動開發模型
    2.6 wdk編程中的特殊點
    2.6.1 內核編程的主要調用源
    2.6.2 函數的多線程安全性
    2.6.3 代碼的中斷級
    2.6.4 wdk中出現的特殊代碼

    3. 串口的過濾
    3.1 過濾的概念
    3.1.1 設備綁定的內核api之一
    3.1.2 設備綁定的內核api之二
    3.1.3 生成過濾設備并綁定
    3.1.4 從名字獲得設備對象
    3.1.5 綁定所有串口
    3.2 獲得實際數據
    3.2.1 請求的區分
    3.2.2 請求的結局
    3.2.3 寫請求的數據
    3.3 完整的代碼
    3.3.1 完整的分發函數
    3.3.2 如何動態卸載
    3.3.3 完整的代碼

    4. 鍵盤的過濾
    4.1 技術原理
    4.1.1 預備知識
    4.1.2 windows中從擊鍵到內核
    4.1.3 鍵盤硬件原理
    4.2 鍵盤過濾的框架
    4.2.1 找到所有的鍵盤設備
    4.2.2 應用設備擴展
    4.2.3 鍵盤過濾模塊的driverentry
    4.2.4 鍵盤過濾模塊的動態卸載
    4.3 鍵盤過濾的請求處理
    4.3.1 通常的處理
    4.3.2 pnp的處理
    4.3.3 讀的處理
    4.3.4 讀完成的處理
    4.4 從請求中打印出按鍵信息
    4.4.1 從緩沖區中獲得keyboard_input_data
    4.4.2 從keyboard_input_data中得到鍵
    4.4.3 從makecode到實際字符
    4.5 hook分發函數
    4.5.1 獲得類驅動對象
    4.5.2 修改類驅動的分發函數指針
    4.5.3 類驅動之下的端口驅動
    4.5.4 端口驅動和類驅動之間的協作機制
    4.5.5 找到關鍵的回調函數的條件
    4.5.6 定義常數和數據結構
    4.5.7 打開兩種鍵盤端口驅動尋找設備
    4.5.8 搜索在kbdclass類驅動中的地址
    4.6 hook鍵盤中斷反過濾
    4.6.1 中斷:irq和int
    4.6.2 如何修改idt
    4.6.3 替換idt中的跳轉地址
    4.6.4 qq的ps/2反過濾措施
    4.7 利用ioapic重定位中斷處理函數
    4.7.1 什么是ioapic
    4.7.2 如何訪問ioapic
    4.7.3 編程修改ioapic重定位表
    4.7.4 插入新的中斷處理
    4.7.5 驅動入口和卸載的實現
    4.8 直接用端口操作鍵盤
    4.8.1 讀取鍵盤數據和命令端口
    4.8.2 p2cuserfilter的最終實

     

    實驗:
    實習示例一:ndis 協議
    驅動程序設計
    1.1 ndis規范
    1.1.1 windows中的網絡體系結構
    1.1.2 ndis驅動程序
    1.1.3 ndis驅動程序的應用
    1.2 ndis協議驅動程序設計
    1.2.1 協議驅動設計框架
    1.2.2 ndis協議驅動設計思想
    1.2.3 ndis協議驅動重要功能的實現
    1.3 上層應用程序
    1.3.1 接口
    1.3.2 數據包的解析
    1.3.3 上層程序的原理與實現


    第二階段
    5. 磁盤的虛擬
    5.1 虛擬的磁盤
    5.2 一個具體的例子
    5.3 入口函數
    5.3.1 入口函數的定義
    5.3.2 ramdisk驅動的入口函數
    5.4 evtdriverdeviceadd函數
    5.4.1 evtdriverdeviceadd的定義
    5.4.2 局部變量的聲明
    5.4.3 磁盤設備的創建
    5.4.4 如何處理發往設備的請求
    5.4.5 用戶配置的初始化
    5.4.6 鏈接給應用程序

    5.5 fat12/16磁盤卷初始化
    5.5.1 磁盤卷結構簡介
    5.5.2 ramdisk對磁盤的初始化
    5.6 驅動中的請求處理
    5.6.1 請求的處理
    5.6.2 讀/寫請求
    5.6.3 deviceiocontrol請求
    5.7 ramdisk的編譯和安裝
    5.7.1 編譯
    5.7.2 安裝
    5.7.3 對安裝的深入探究

    6. 磁盤過濾
    6.1 磁盤過濾驅動的概念
    6.1.1 設備過濾和類過濾
    6.1.2 磁盤設備和磁盤卷設備過濾驅動
    6.1.3 注冊表和磁盤卷設備過濾驅動
    6.2 具有還原功能的磁盤卷過濾驅動
    6.2.1 簡介
    6.2.2 基本思想
    6.3 驅動分析
    6.3.1 driverentry函數
    6.3.2 adddevice函數
    6.3.3 pnp請求的處理
    6.3.4 power請求的處理
    6.3.5 deviceiocontrol請求的處理
    6.3.6 bitmap的作用和分析
    6.3.7 boot驅動完成回調函數和稀疏文件
    6.3.8 讀/寫請求的處理
    6.3.9 示例代碼

    7. 文件系統的過濾與監控
    7.1 文件系統的設備對象
    7.1.1 控制設備與卷設備
    7.1.2 生成自己的一個控制設備
    7.2 文件系統的分發函數
    7.2.1 普通的分發函數
    7.2.2 文件過濾的快速io分發函數
    7.2.3 快速io分發函數的一個實現
    7.2.4 快速io分發函數逐個簡介
    7.3 設備的綁定前期工作
    7.3.1 動態地選擇綁定函數
    7.3.2 注冊文件系統變動回調
    7.3.3 文件系統變動回調的一個實現
    7.3.4 文件系統識別器
    7.4 文件系統控制設備的綁定
    7.4.1 生成文件系統控制設備的過濾設備
    7.4.2 綁定文件系統控制設備
    7.4.3 利用文件系統控制請求
    7.5 文件系統卷設備的綁定
    7.5.1 從irp中獲得vpb指針
    7.5.2 設置完成函數并等待irp完成
    7.5.3 卷掛載irp完成后的工作
    7.5.4 完成函數的相應實現
    7.5.5 綁定卷的實現
    7.6 讀/寫操作的過濾
    7.6.1 設置一個讀處理函數
    7.6.2 設備對象的區分處理
    7.6.3 解析讀請求中的文件信息
    7.6.4 讀請求的完成
    7.7 其他操作的過濾
    7.7.1 文件對象的生存周期
    7.7.2 文件的打開與關閉
    7.7.3 文件的刪除
    7.8 路徑過濾的實現
    7.8.1 取得文件路徑的3種情況
    7.8.2 打開成功后獲取路徑
    7.8.3 在其他時刻獲得文件路徑
    7.8.4 在打開請求完成之前獲得路徑名
    7.8.5 把短名轉換為長名
    7.9 把sfilter編譯成靜態庫
    7.9.1 如何方便地使用sfilter
    7.9.2 初始化回調、卸載回調和綁定回調
    7.9.3 綁定與回調
    7.9.4 插入請求回調
    7.9.5 如何利用sfilter.lib
    實驗:
    實習示例二:七個小實習
    1.1 實習一:讀者寫者問題
    1.1.1 實習要求
    1.1.2 測試數據文件格式
    1.1.3 實習分析
    1.1.4 相關api函數說明
    1.1.5 參考源代碼
    1.1.6 示例程序的結果分析

    1.2 實習二:內存管理
    1.2.1 實習要求
    1.2.2 實習目的
    1.2.3 參考源程序說明
    1.2.4 相關api函數說明
    1.2.5 參考源代碼
    1.2.6 運行結果分析

    1.3 實習三:快速文件系統
    1.3.1 基本知識介紹
    1.3.2 實習要求
    1.3.3 示例程序的使用
    1.3.4 參考源程序說明
    1.3.5 相關api函數說明
    1.3.6 示例程序的測試結果及分析
    1.3.7 實習中應注意的問題
    1.3.8 參考源代碼

    1.4 實習四:軟盤i/o
    1.4.1 實習要求
    1.4.2 具體流程
    1.4.3 相關api函數說明
    1.4.4 參考源代碼
    1.4.5 習題
    1.5 實習五:winsock網絡通信
    1.5.1 實習要求
    1.5.2 實習環境
    1.5.3 實習步驟
    1.5.4 相關api函數說明
    1.5.5 參考源代碼
    1.5.6 習題
    1.6 實習六:windows 應用程序
    與動態鏈接庫
    1.6.1 基本知識介紹
    1.6.2 實習要求
    1.6.3 相關說明
    1.6.4 相關api函數說明
    1.6.5 參考源程序及說明
    1.7 實習七:wdm驅動程序開發
    1.7.1 實習目的
    1.7.2 實習過程
    1.7.3 參考源代碼
    第三階段
    8. 文件系統透明加密
    8.1 文件透明加密的應用
    8.1.1 防止企業信息泄密
    8.1.2 文件透明加密防止企業信息泄密
    8.1.3 文件透明加密軟件的例子
    8.2 區分進程
    8.2.1 機密進程與普通進程
    8.2.2 找到進程名字的位置
    8.2.3 得到當前進程的名字
    8.3 內存映射與文件緩沖
    8.3.1 記事本的內存映射文件
    8.3.2 windows的文件緩沖
    8.3.3 文件緩沖:明文還是密文的選擇
    8.3.4 清除文件緩沖
    8.4 加密標識
    8.4.1 保存在文件外、文件頭還是文件尾
    8.4.2 隱藏文件頭的大小
    8.4.3 隱藏文件頭的設置偏移
    8.4.4 隱藏文件頭的讀/寫偏移
    8.5 文件加密表
    8.5.1 何時進行加密操作
    8.5.2 文件控制塊與文件對象
    8.5.3 文件加密表的數據結構與初始化
    8.5.4 文件加密表的操作:查詢
    8.5.5 文件加密表的操作:添加
    8.5.6 文件加密表的操作:刪除
    8.6 文件打開處理
    8.6.1 直接發送irp進行查詢與設置操作
    8.6.2 直接發送irp進行讀/寫操作
    8.6.3 文件的非重入打開
    8.6.4 文件的打開預處理
    8.7 讀寫加密/解密
    8.7.1 在讀取時進行解密
    8.7.2 分配與釋放mdl
    8.7.3 寫請求加密
    8.8 crypt_file的組裝
    8.8.1 crypt_file的初始化
    8.8.2 crypt_file的irp預處理
    8.8.3 crypt_file的irp后處理

    9. 文件系統微過濾驅動
    9.1 文件系統微過濾驅動簡介
    9.1.1 文件系統微過濾驅動的由來
    9.1.2 minifilter的優點與不足
    9.2 minifilter的編程框架
    9.2.1 微文件系統過濾的注冊
    9.2.2 微過濾器的數據結構
    9.2.3 卸載回調函數
    9.2.4 預操作回調函數
    9.2.5 后操作回調函數
    9.2.6 其他回調函數
    9.3 minifilter如何與應用程序通信
    9.3.1 建立通信端口的方法
    9.3.2 在用戶態通過dll使用通信端口的范例
    9.4 minifilter的安裝與加載
    9.4.1 安裝minifilter的inf文件
    9.4.2 啟動安裝完成的minifilter


    10. 網絡傳輸層過濾
    10.1 tdi概要
    10.1.1 為何選擇tdi
    10.1.2 從socket到windows內核
    10.1.3 tdi過濾的代碼例子
    10.2 tdi的過濾框架
    10.2.1 綁定tdi的設備
    10.2.2 唯一的分發函數
    10.2.3 過濾框架的實現
    10.2.4 主要過濾的請求類型
    10.3 生成請求:獲取地址
    10.3.1 過濾生成請求
    10.3.2 準備解析ip地址與端口
    10.3.3 獲取生成的ip地址和端口
    10.3.4 連接終端的生成與相關信息的保存
    10.4 控制請求
    10.4.1 tdi_associate_address的過濾
    10.4.2 tdi_connect的過濾
    10.4.3 其他的次功能號
    10.4.4 設置事件的過濾
    10.4.5 tdi_event_connect類型的設置事件的過濾
    10.4.6 直接獲取發送函數的過濾
    10.4.7 清理請求的過濾
    10.5 本書例子tdifw.lib的應用
    10.5.1 tdifw庫的回調接口
    10.5.2 tdifw庫的使用例子
    實驗:
    實驗三、 tdifw庫的使用實驗
    第四階段


    11. ndis協議驅動
    11.1 以太網包和網絡驅動架構
    11.1.1 以太網包和協議驅動
    11.1.2 ndis網絡驅動
    11.2 協議驅動的driverentry
    11.2.1 生成控制設備
    11.2.2 注冊協議
    11.3 協議與網卡的綁定
    11.3.1 協議與網卡的綁定概念
    11.3.2 綁定回調處理的實現
    11.3.3 協議綁定網卡的api
    11.3.4 解決綁定競爭問題
    11.3.5 分配接收和發送的包池與緩沖池
    11.3.6 oid請求的發送和請求完成回調
    11.3.7 ndisprotcreatebinding的最終實現
    11.4 綁定的解除
    11.4.1 解除綁定使用的api
    11.4.2 ndisprotshutdownbinding的實現
    11.5 在用戶態操作協議驅動
    11.5.1 協議的收包與發包
    11.5.2 在用戶態編程打開設備
    11.5.3 用deviceiocontrol發送控制請求
    11.5.4 用writefile發送數據包
    11.5.5 用readfile發送數據包
    11.6 在內核態完成功能的實現
    11.6.1 請求的分發與實現
    11.6.2 等待設備綁定完成與指定設備名
    11.6.3 指派設備的完成
    11.6.4 處理讀請求
    11.6.5 處理寫請求
    11.7 協議驅動的接收回調
    11.7.1 和接收包有關的回調函數
    11.7.2 receivehandler的實現
    11.7.3 transferdatacompletehandler的實現
    11.7.4 receivepackethandler的實現
    11.7.5 接收數據包的入隊
    11.7.6 接收數據包的出隊和讀請求的完成

    12. ndis小端口驅動
    12.1 小端口驅動的應用與概述
    12.1.1 小端口驅動的應用
    12.1.2 小端口驅動的實例
    12.1.3 小端口驅動的運作與編程概述
    12.2 小端口驅動的初始化
    12.2.1 小端口驅動的driverentry
    12.2.2 小端口驅動的適配器結構
    12.2.3 配置信息的讀取
    12.2.4 設置小端口適配器上下文
    12.2.5 mpinitialize的實現
    12.2.6 mphalt的實現
    12.3 打開ndisprot設備
    12.3.1 i/o目標
    12.3.2 給io目標發送deviceiocontrol請求
    12.3.3 打開ndisprot接口并完成配置設備
    12.4 使用ndisprot發送包
    12.4.1 小端口驅動的發包接口
    12.4.2 發送控制塊(tcb)
    12.4.3 遍歷包組并填寫tcb
    12.4.4 寫請求的構建與發送
    12.5 使用ndisprot接收包
    12.5.1 提交數據包的內核api
    12.5.2 從接收控制塊(rcb)提交包
    12.5.3 對ndisprot讀請求的完成函數
    12.5.4 讀請求的發送
    12.5.5 用于讀包的wdf工作任務
    12.5.6 ndisedge讀工作任務的生成與入列
    12.6 其他的特征回調函數的實現
    12.6.1 包的歸還
    12.6.2 oid查詢處理的直接完成
    12.6.3 oid設置處理

    13. ndis中間層驅動
    13.1 ndis中間層驅動概述
    13.1.1 windows網絡架構總結
    13.1.2 ndis中間層驅動簡介
    13.1.3 ndis中間層驅動的應用
    13.1.4 ndis包描述符結構深究
    13.2 中間層驅動的入口與綁定
    13.2.1 中間層驅動的入口函數
    13.2.2 動態綁定nic設備
    13.2.3 小端口初始化(mpinitialize)
    13.3 中間層驅動發送數據包
    13.3.1 發送數據包原理
    13.3.2 包描述符“重利用”
    13.3.3 包描述符“重申請”
    13.3.4 發送數據包的異步完成
    13.4 中間層驅動接收數據包
    13.4.1 接收數據包概述
    13.4.2 用ptreceive接收數據包
    13.4.3 用ptreceivepacket接收
    13.4.4 對包進行過濾
    13.5 中間層驅動程序查詢和設置
    13.5.1 查詢請求的處理
    13.5.2 設置請求的處理
    13.6 ndis句柄
    13.6.1 不可見的結構指針
    13.6.2 常見的ndis句柄
    13.6.3 ndis句柄誤用問題
    13.6.4 一種解決方案
    13.7 生成普通控制設備
    13.7.1 在中間層驅動中添加普通設備
    13.7.2 使用傳統方法來生成控制設備

    14. windows內核高級
    14.1 網絡
    14.1.1 windows網絡體系結構
    14.1.2 tdi(傳輸驅動程序接口)
    14.1.3 ndsi(網絡驅動程序接口規范)
    14.1.4 windows vista以后的網絡結構
    14.2 windows子系統
    14.2.1 windows子系統結構
    14.2.2 windows子系統初始化與gui線程
    14.2.3 窗口管理
    14.2.4 gdi(圖形設備接口)
    14.2.5 windows vista以后的子系統變化
    14.3 內核日志
    14.3.1 wrk中的內核記錄器
    14.3.2 利用etw信息診斷性能問題
    14.4 windows vista/server 2008/7的重要變化
    14.4.1 minwin工程

    實驗:
    實習示例三:文件系統

    1.1 windows fsd 體系結構
    1.1.1 本地 fsd
    1.1.2 遠程 fsd
    1.1.3 fsd 與文件系統操作
    1.1.4 fsd 與系統注冊表的關系
    1.2 虛擬盤文件系統驅動程序
    1.2.1 driver entry 例程
    1.2.2 創建虛擬磁盤設備
    1.2.3 主要分發例程
    1.2.4 ntifs.h 中重要的數據
    結構和函數原型聲明
    1.3 虛擬盤文件系統應用程序