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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows内核符号表学习总结

發布時間:2025/4/14 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows内核符号表学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內核符號表

http://blog.csdn.net/vbsourcecode/article/details/8555796


在進行Windows Driver開發調試中,內核符號表是個問題。由于網絡不穩定,利用windbg下載不了,在


WDK的documentation中查找到下載然后本地運用的地址,貼上來:http://msdn.microsoft.com/en-


us/windows/hardware/gg463028.aspx在里面選擇所需要調試系統版本的內核符號表,下載即可。附上原


有的方法:將 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 添加到windbg的


Sysmbol File path中,并與編譯好的驅動的目錄放在一起用分號隔開。 Windows內核開發調試環境配置


詳解分類: Windows內核2011-08-31 16:27 360人閱讀 評論(0) 收藏 舉報1. 下載和使用WDK應用程序


使用開發包SDK,類似的,內核編程使用"Windows Driver Kit",簡稱WDK。WDK已經自帶所有需要的頭文


件、庫、C/C++語言及匯編語言的編譯器和鏈接器如何獲取WDK參見http://msdn.microsoft.com/zh-


cn/windows/hardware/gg487463安裝注意:盡量安裝到相對簡單路徑,避免特殊情況配置路徑時麻煩以


及可能出現的編譯問題選擇“完全安裝”2.編寫第一個內核模塊


=============================#include VOID DriverUnload(PDRIVER_OBJECT driver){ DbgPrint


("first: Our driver is unloading...\r\n");}NTSTATUS DriverEntry (PDRIVER_OBJECT driver,?


PUNICODE_STRING reg_path){#if DBG _asm int 3#endifDbgPrint("first: Hello Windows?


kernel!!");driver->DriverUnload = DriverUnload;return STATUS_SUCCESS;}


==============================以上是一個最簡單的示例程序DriverEntry是每個內核模塊的入口,在


加載這個模塊時被系統進程System調用一次。3.編譯該內核模塊在first.c相同工程目錄下增加兩個文件


:makefile和sources內容分別為:


makefile==============================#####################################################


########################## Copyright (C) Microsoft Corporation 1995# All Rights Reserved.#?


# MAKEFILE for WDM device driver?


kit################################################################################ DO NOT?


EDIT THIS FILE!!! Edit .\sources. if you want to add a new source# file to this component.?


This file merely indirects to the real make file# that is shared by all the driver?


components of the Windows NT DDK#!if "$(WIN2K_DDKBUILD)" == ""!INCLUDE?


$(NTMAKEENV)\makefile.def!


endif===============================sources===============================#?


##############################################################Copyright (c) 2000 Microsoft?


Corporation##Date:# 19-Jul-2000##Module Name:# sources.##Abstract:# This file specifies the?


target component being built and the list of# sources files needed to build that component.?


Also specifies optional# compiler switches and libraries that are unique for the component?


being# built.## This directory builds# WIA Sample Camera Driver##?


############################################################TARGETNAME=firstTARGETTYPE=DRIV


ERSOURCES=first.c===============================開始->程序->Windows Driver Kits-> WDK?


XXXX.XXXX ->Build Enviroments ->Windows XP ->Launch Windows XP x86 Checked Build Enviroment


編譯即得到first.sys4. Vmware創建一個新的虛擬機,并安裝WindowsXP SP3系統步驟在此不再詳述,可


搜索相關帖子記得安裝Vmware tools, 以方便虛擬機內外共享文件5. 在虛擬機中下載并安裝


srvinstwsrvinstw即services installation for windows搜索下載,參考


http://www.onlinedown.net/soft/36059.htma. 將剛剛編譯生成的first.sys拖入虛擬機b. 安裝服務->


本地計算機->輸入不與已存在服務重名的服務名c. 手動輸入sys文件的路徑d. 選擇“設備驅動”e. 選


擇啟動類型為手動6. 運行與查看輸出信息至此內核模塊已經可以運行了,可以通過net start first /?


net stop first來啟動和停止該服務內核模塊的輸出可以在WinDbg中查看;也可以直接用DbgView.exe來


查看輸出去微軟的網站上下載DebugView.exe,參考地址http://technet.microsoft.com/zh-


cn/sysinternals/bb896647(en-us).aspx DebugView需要在Capture菜單中將Capture Kernel勾上再次啟


動/停止服務,就可以在DbgView中看到輸出了7. 在調試機(宿主機)安裝WinDbgWinDbg下載地址參考:


http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx8. 設置Windows XP調試執行顯


示所有文件,不隱藏系統保護的文件后在系統盤下打開并修改boot.ini文件內容通常為:


============================[boot loader]timeout=0default=multi(0)disk(0)rdisk(0)partition


(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft?


Windows XP Professional" /noexecute=optin /fastdetect============================最后一行復


制一下,并加上新的參數使之以調試方法啟動multi(0)disk(0)rdisk(0)partition


(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug?


/debugport=com1 /baudrate=1152009. 設置VMWare的管道虛擬串口調試機應與被調試機以串口相連,若


被調試機是虛擬機,可以在虛擬機上生成一個用管道虛擬的串口打開虛擬機,不要啟動->左邊Commands


欄->Edit virtual machine settings->Hardware->Add在Add Hardware Wizard中,類型選擇"Serial?


Port"選擇"Output to named pipe"接下來分別選擇"\\.\pipe\com_1"和"This end is the server"以及


"The other end is an application."完成即可10. WinDbg的啟動參數在調試機上加上如下參數啟動


WinDbg,使之連接一個管道,并把這個管道當作一個串口來處理windbg.exe -b -k com:port=\\.=pipe


\com_1,baud=115200,pipe在控制臺執行此命令或者在windbg.exe的快捷方式屬性中“目標”中增加上述


啟動參數先打開虛擬機,啟動到調試模式下的Windows,然后啟動WinDbg,顯示已連接上的信息就表示成


功了剛連接上時虛擬機里的系統會被中斷,這時要在WinDbg的命令提示符“kd>”后輸入“g”并回車11.?


設置Windows的內核符號表WindDbg把內核視為一個整體,只要告訴它代碼的路徑和符號表的路徑就可以


了調試連接上之后,File->Symbol File Path, 輸入符號表位置,指定編譯結果所在的


objchk_wxp_x86\i386即可還需要指定Windows的內核符號表,在上文的符號表路徑中增加一條路徑,與


之前的用分號隔開:srv*c:\symbols*http://msdl.microsoft.com/download/symbols可打開C:\symbols


查看是否將符號表下下來;若沒有,多Reload幾次12. 調試first源碼中#if DBG _asm int 3#endifint?


3是一句匯編指令,執行到此程序會中斷;若不是調試狀態執行則會直接藍屏加上宏DBG測試以保證只有


調試版本該語句才會被編譯在虛擬機中運行net start first, 則會看到彈出斷點此時可以打開Watch窗


口觀察和修改變量了本文是根據譚文《Windows內核安全編程》一書,結合自己的實際應用進行整理所得
========

關于內核符號表

windows的symbol內核符號表貌似挺多,要下哪一個?求指導


貌似是分 32位、64位的。


分系統的。看你的系統是xp,win7。下的不一樣。除此之外還有32位,64位之分。
其實用符號的地方都可以自動從網絡上下的比如windbg配置好就行了。


windows內核符號表的版本該怎么選擇


都說在用雙機調試驅動的時候要下載windows的內核符號表。于是我就去官網看了下發現。都是預覽版的


符號表還有RT版的!有點迷惑了!我用的是企業版!不知道該下載哪個!
========

Windows內核符號表下載

http://blog.csdn.net/taobao755624068/article/details/7751030


目錄(?)[-]
Windows內核開發調試環境配置詳解


在進行Windows Driver開發調試中,內核符號表是個問題。由于網絡不穩定,利用windbg下載不了,在


WDK的documentation中查找到下載然后本地運用的地址,貼上來:http://msdn.microsoft.com/en-


us/windows/hardware/gg463028.aspx
在里面選擇所需要調試系統版本的內核符號表,下載即可。
附上原有的方法:將 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 添加到windbg的


Sysmbol File path中,并與編譯好的驅動的目錄放在一起用分號隔開。


1. 下載和使用WDK


應用程序使用開發包SDK,類似的,內核編程使用"Windows Driver Kit",簡稱WDK。WDK已經自帶所有需


要的頭文件、庫、C/C++語言及匯編語言的編譯器和鏈接器


如何獲取WDK
參見
http://msdn.microsoft.com/zh-cn/windows/hardware/gg487463


安裝注意:
盡量安裝到相對簡單路徑,避免特殊情況配置路徑時麻煩以及可能出現的編譯問題
選擇“完全安裝”


2.編寫第一個內核模塊
=============================
#include <ntddk.h>


VOID DriverUnload(PDRIVER_OBJECT driver)
{
? ? ?DbgPrint("first: Our driver is unloading...\r\n");
}


NTSTATUS DriverEntry (PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
#if DBG
? ? ?_asm int 3
#endif


DbgPrint("first: Hello Windows kernel!!");
driver->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}
==============================
以上是一個最簡單的示例程序
DriverEntry是每個內核模塊的入口,在加載這個模塊時被系統進程System調用一次。


3.編譯該內核模塊
在first.c相同工程目錄下增加兩個文件:makefile和sources


內容分別為:
makefile
==============================


#############################################################################
#
# ? ? ? Copyright (C) Microsoft Corporation 1995
# ? ? ? All Rights Reserved.
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
# ? ? ? MAKEFILE for WDM device driver kit
#
#############################################################################


#
# DO NOT EDIT THIS FILE!!! ?Edit .\sources. if you want to add a new source
# file to this component. ?This file merely indirects to the real make file
# that is shared by all the driver components of the Windows NT DDK
#


!if "$(WIN2K_DDKBUILD)" == ""
!INCLUDE $(NTMAKEENV)\makefile.def
!endif


===============================


sources
===============================
# ############################################################
#
#Copyright (c) 2000 ?Microsoft Corporation
#
#Date:
# ? 19-Jul-2000
#
#Module Name:
# ? ?sources.
#
#Abstract:
# ? ?This file specifies the target component being built and the list of
# ? ?sources files needed to build that component. ?Also specifies optional
# ? ?compiler switches and libraries that are unique for the component being
# ? ?built.
#
# ?This directory builds
# ? ? ? WIA Sample Camera Driver
#
# ############################################################


TARGETNAME=first
TARGETTYPE=DRIVER
SOURCES=first.c
===============================


開始->程序->Windows Driver Kits-> WDK XXXX.XXXX ->Build Enviroments ->Windows XP ->Launch?


Windows XP x86 Checked Build Enviroment


編譯即得到first.sys


4. Vmware創建一個新的虛擬機,并安裝WindowsXP SP3系統
步驟在此不再詳述,可搜索相關帖子
記得安裝Vmware tools, 以方便虛擬機內外共享文件


5. 在虛擬機中下載并安裝srvinstw
srvinstw即services installation for windows
搜索下載,參考
http://www.onlinedown.net/soft/36059.htm


a. 將剛剛編譯生成的first.sys拖入虛擬機
b. 安裝服務->本地計算機->輸入不與已存在服務重名的服務名
c. 手動輸入sys文件的路徑
d. 選擇“設備驅動”
e. 選擇啟動類型為手動


6. 運行與查看輸出信息
至此內核模塊已經可以運行了,可以通過net start first / net stop first來啟動和停止該服務
內核模塊的輸出可以在WinDbg中查看;也可以直接用DbgView.exe來查看輸出


去微軟的網站上下載DebugView.exe,參考地址
http://technet.microsoft.com/zh-cn/sysinternals/bb896647(en-us).aspx
?
DebugView需要在Capture菜單中將Capture Kernel勾上


再次啟動/停止服務,就可以在DbgView中看到輸出了


7. 在調試機(宿主機)安裝WinDbg
WinDbg下載地址參考:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx


8. 設置Windows XP調試執行
顯示所有文件,不隱藏系統保護的文件后
在系統盤下打開并修改boot.ini文件


內容通常為:
============================
[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"?


/noexecute=optin /fastdetect
============================
最后一行復制一下,并加上新的參數使之以調試方法啟動
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"?


/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200


9. 設置VMWare的管道虛擬串口
調試機應與被調試機以串口相連,若被調試機是虛擬機,可以在虛擬機上生成一個用管道虛擬的串口


打開虛擬機,不要啟動->左邊Commands欄->Edit virtual machine settings->Hardware->Add
在Add Hardware Wizard中,
類型選擇"Serial Port"
選擇"Output to named pipe"
接下來分別選擇"\\.\pipe\com_1"和"This end is the server"以及"The other end is an?


application."
完成即可


10. WinDbg的啟動參數
在調試機上加上如下參數啟動WinDbg,使之連接一個管道,并把這個管道當作一個串口來處理


windbg.exe -b -k com:port=\\.=pipe\com_1,baud=115200,pipe


在控制臺執行此命令或者在windbg.exe的快捷方式屬性中“目標”中增加上述啟動參數


先打開虛擬機,啟動到調試模式下的Windows,然后啟動WinDbg,顯示已連接上的信息就表示成功了
剛連接上時虛擬機里的系統會被中斷,這時要在WinDbg的命令提示符“kd>”后輸入“g”并回車


11. 設置Windows的內核符號表
WindDbg把內核視為一個整體,只要告訴它代碼的路徑和符號表的路徑就可以了
調試連接上之后,File->Symbol File Path, 輸入符號表位置,指定編譯結果所在的


objchk_wxp_x86\i386即可
還需要指定Windows的內核符號表,在上文的符號表路徑中增加一條路徑,與之前的用分號隔開:
srv*c:\symbols*http://msdl.microsoft.com/download/symbols


可打開C:\symbols查看是否將符號表下下來;若沒有,多Reload幾次


12. 調試first
源碼中
#if DBG
? _asm int 3
#endif


int 3是一句匯編指令,執行到此程序會中斷;若不是調試狀態執行則會直接藍屏
加上宏DBG測試以保證只有調試版本該語句才會被編譯


在虛擬機中運行net start first, 則會看到彈出斷點


此時可以打開Watch窗口觀察和修改變量了


本文是根據譚文《Windows內核安全編程》一書,結合自己的實際應用進行整理所得
========

設置Windows內核符號表

http://book.51cto.com/art/200905/125736.htm
現在虛擬機里的操作系統進入了調試模式,那么怎樣調試之前編譯的first呢?實際上,沒有必要告訴


WinDbg需要調試的是first,WinDbg把內核視為一個整體,我們只要告訴它代碼的路徑和符號表的路徑就


可以了。


在調試連接上之后,打開WinDbg的主菜單“File”下的“Symbol File Path”,在這里輸入符號表位置


。符號表和sys產生在同一個目錄下,所以只要指定本機上編譯結果所在的objchk_wxp_x86\i386目錄就


可以了。


如果有多個驅動需要調試,那么可以指定多個路徑,路徑之間用分號分隔。


此外,需要指定Windows的內核符號表。Windows的每一個sys文件都有自己的符號表,這些符號表需要從


網上下載,但是沒有必要自己去下載。可以在Symbol File Path中增加如下一條設置,用分號與其他路


徑隔開:


srv*c:\symbols*http://msdl.microsoft.com/download/symbols
這條設置使WinDbg自動用HTTP協議從微軟的網站上下載所需要的符號表。首次使用會使WinDbg變得極慢


,接近死機,但是沒有關系,實際上,WinDbg正在下載符號表,可以打開c:\symbols查看,這個路徑也


可以指定為其他的位置。


請注意下載并不一定總是成功。如果發現符號表并沒有下載下來,請多試幾次。筆者有時也是多次才成


功。


下載完成后執行就很快了。讀者可以在調試過程中看見微軟提供的所有的函數名,也可以隨時查看調用


棧。


如果調試時總是看不見可懂的函數名,這是符號表設置問題,請正確設置參數并保持網絡暢通。


下面是用WinDbg開始調試虛擬機的情形,如圖1-10所示。
========

總結

以上是生活随笔為你收集整理的Windows内核符号表学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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