小默

寒江独钓(1) - first 和 环境的设置

《寒江独钓-Windows内核安全编程》,谭文等,电子工业出版社。学习笔记。

实例first
项目目录下有三个文件:
first.c
MAKEFILE
SOURCES

first.c
DriverEntry()相当于C中的main()
DriverUnload()在卸载驱动时做一些善后工作
这里什么都不做,只输出两条信息
另外,DbgPrint()函数的输出信息在Dbgview上可以看到,但是我用WinDbg调试的时候,没有看到输出信息.
KdPrint()的输出信息可以用WinDbg看到
--------------
呃,就在刚写下上面这些话后,WinDbg中看到DbgPrint()的输出了,之前关机时虚拟机中xp没有关,直接suspend,resume,当然xp还是Debug模式,然后把WinDbg打开自动连上xp,然后就显示了,不知道为什么- -!
//first
#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)
{
    DbgPrint(
"first:Hello,Driver World!\r\n");

    driver
->DriverUnload = DriverUnload;

    
return STATUS_SUCCESS;
}

MAKEFILE
这个MAKEFILE只能在xp下用,如果在其它操作系统下,参照WDK自带示例中的MAKEFILE
!IF 0
Copyright (C) Microsoft Corporation,
1999 - 2002
Module Name
    makefile.
Notes:
    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 makefile that is shared by all the componets of Windows NT (DDK)
!ENDIF
!INCLUDE $(NTMAKEENV)\makefile.def

SOURCES
很直白,不用解释了.
注意一点,如果使用自定义的头文件,像first.h,不要写到SOURCES后面,编译器会自己完成包含头文件的工作
TARGETNAME = first
TARGETTYPE 
= DRIVER
SOURCES
= first.c


软件准备
用到的软件: 建造环境WDK, 虚拟机VMare, 调试器WinDbg,安装服务的小工具SRVINSTW
WDK微软官网下,直接装就行了
虚拟机VMare: 直接安装
            然后装个xp系统 File -> New -> Virtual Machine
            xp设置成Debug模式启动,方法是修改boot.int
            给xp添加一个串口
调试器:安装完成后,桌面建快捷方式,目标路径后添加以下内容设置调试对象 
--k com:port=\\.\pipe\com_1,baud=115200,pipe
安装服务的小工具SRVINSTW

试一下上面的小程序
1.建造sys文件: 打开x86 Checked Build Environment,进到放firsr项目的路径中,build,生成first.sys
2.安装: 把first.sys拷贝到虚拟机,用SRVINSTW安装
                      
3.启动服务 cmd中输入net start first
4.停止服务 cmd中输入net stop first
5.WinDbg中结果

posted on 2010-01-09 15:08 小默 阅读(645) 评论(0)  编辑 收藏 引用 所属分类: Windows


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜