博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
天书夜读:从汇编语言到Windows内核编程笔记(3)
阅读量:4691 次
发布时间:2019-06-09

本文共 1567 字,大约阅读时间需要 5 分钟。

Windows
内核(一)
.sys
放在
Drivers
目录下。运行在
R0
层。
WDK
的相应环境中,进行相应代码目录,
build.
一个内核程序被看作一个
PE
格式的
DLL
,它是被
Windows
整个内核调用的一个
DLL
,一旦加裁,就成为内核的组成部分。所有的内核内存空间是共享的。内核程序崩溃,
Windows
系统也就崩溃了。
DriverEntry
是一个内核程序的入口,以
system
进程名出现。
编写内核的规则:
不能调用
Windows
应用层
API
函数,而应用内核
API
关于字符串,内存处理,打印等,参见前面
Rtl
函数
浮点数要特殊处理
Windows
中,不同类型设备的驱动有不同的安装方式,
ini
文件。非
任何类型
的驱动程序,当作服务安装。(搜
服务安装驱动下载
net start
服务名)
调试
Windbg ( )
我们用虚拟机进行调试
VMWare.
环境搭建:
1
虚拟机中
boot.ini
.......
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /debug /debugport=com1 /baudrate=9600
2
设置虚拟机
Hardward > Serial Port > Output to named pipe,
添入:
\\.\pipe\com_1,this end is the server,the other end is an application.
3
Windbg
设置
Windbg
(本机中)的启动参数:
Windbg.exe -b -k com:port=\\.\pipe\com_1,baud=9600,pipe
(
整成快捷方式
)
说明
1
:在虚拟中在调试模式下启动
windows
后,马上以以上参数启动
Windbg
说明
2
:我以指定波特率启动
WINDBG
时老是提示我参数出错,把指定波特项取消后可以成功。
4
设置代码路径和符号表位置,就可以调试了。
Symbol File Path
中,
sys
的位置。多个路径以分号隔开。
用以下设置来下载符号表。
srv*c:\symbols*
(
关于说明,可见: )
其它更进一步的关于汇编代码的分析,见
[6]
其它调试如同
VS
中。
C++
写内核
需要自己写
new
操作符
ecx
传递
this
指针对象的开头部分就是虚函数表地址
父类和子类各有一份虚函数表,没有共公部分。在子类的虚函数表中,没有重载的基类虚函数的地址和基类虚函数一样,而重载后有自己独特的地址。
参考
[1]
[2]
[3
[4]
[5] Windows
驱动编程基础教程
.doc
[6]
天书夜读
-
从汇编语言到
windows
内核编程
( )
[7] Windows DDK
推荐其它书籍
Programming the micfosoft windows Driver Model:
驱动开发
windows
环境下的
32
位汇编语言程序设计:汇编学习
软件调试,张银奎:软件调试

转载于:https://www.cnblogs.com/forlina/archive/2011/07/11/2103094.html

你可能感兴趣的文章