24小时热门版块排行榜    

查看: 948  |  回复: 0

zyj8119

木虫 (著名写手)

[交流] 【转帖】Delphi驱动开发研究(工具更新至0.03版)

Delphi能不能开发Windows的驱动程序(这里的驱动程序当然不是指VxD了^_^)一直是广大Delphi fans关注的问题。由于Delphi编译器无法生成Native格式的PE文件,因此是无法使用Delphi直接生成驱动程序的(个人见解,欢迎斧正),必须配合ms link才能生成最终的驱动程序。本人经过总结网上一些前辈高人的方法并结合自己的研究成果,摸索出了一种较为方便的使用Delphi开发驱动程序的方法,不敢独亨,希望能同论坛里的高手们一起打造出一个实用的驱动开发工具。^_^

2010.03.04 -- KmdKit4D更新到0.20版:
本次更新是KmdKit4D自发布以来最重大的一次,KmdKit4D升级到0.2版,rmcoff同步升级到2.4.1.239。KmdKit4D会更加灵活方便和易于使用。主要更新的内容如下:
1.rmcoff增加新的选项/cfg,此选项允许你通过定义配置文件为KmdKit4D增加类似VC #pragma alloc_text编译指令的功能,你可以把不同的代码放入不同的section,目前支持Page和Init两个选项,具体用法如下:
(1)编辑一个文本文件,如果你要将DriverEntry函数放入Init Section中,就输入:Init=DriverEntry,如果有多个函数,函数名用“,”号分隔,就像这样:Init=Func1,Func2,......。
(2)运行rmcoff时加上/cfg:[配置文件名参数],如:rmcoff test.obj /cfg:test.cfg。
(3)要放入Init和Page Section的函数必须在Delphi单元文件的interface部分进行声明。
2.经rmcoff转换后的目标文件的符号名按微软的符号名格式命名,这样做的好处就是KmdKit4D可以直接链接微软的静态库和用VC和MASM生成的obj文件并调用其提供的函数,同样,用VC或者MASM生成的obj文件也可以调用经KmdKit4D转换后的目标文件里的函数。这样你不但可以用Delphi给KmdKit4D编写函数库,也可以用VC和MASM为KmdKit4D编写函数库。需要注意的就是函数库里的函数必须是stdcall或者C调用约定的。
3.修改了经rmcoff转换后的obj文件格式,使其支持ms link的smart link功能,只有用到的代码和数据才会被链接进最终的驱动文件中,这样KmdKit4D生成的驱动文件将会更加小巧。
4.由于符号命名格式发生变化,定义DriverEntry函数时不再需要前面的下划线,这点一定要注意。
5.由于符号命名格式发生变化,在Delphi中对导入库的声明也要做相应的调整,比如你要导入ntoskrnl.exe文件导出的RtlInitUnicodeString函数,0.2前的版本是这样声明的:
procedure RtlInitUnicodeString; external NtKernel name '_RtlInitUnicodeString';
从0.2版开始要改成:
procedure RtlInitUnicodeString; external NtKernel name '_RtlInitUnicodeString@8';
这个是stdcall的,对fastcall的则要改成下面的形式:
function krnlIofCallDriver; external NtKernel name '@IofCallDriver@8';


Delphi驱动开发专题主要包括以下几方面的内容:
一、实现原理----用Delphi开发驱动程序需要解决的主要技术问题
http://bbs.pediy.com/showthread.php?t=57762
二、工具及环境搭建----KmdKit4D的组成及环境搭建方法
http://bbs.pediy.com/showthread.php?t=58070
三、一个用Delphi开发的简单但功能完备的驱动程序示例
http://bbs.pediy.com/showthread.php?t=58301
四、内存管理之系统内存堆
http://bbs.pediy.com/showthread.php?t=58608
五、内存管理之后备列表
http://bbs.pediy.com/showthread.php?t=59265
六、内核模式与用户模式通讯之共享Section
http://bbs.pediy.com/showthread.php?t=66291
七、内核模式与用户模式通讯之共享内存
http://bbs.pediy.com/showthread.php?t=66661
八、注册表
http://bbs.pediy.com/showthread.php?t=71350
九、目录与文件
http://bbs.pediy.com/showthread.php?t=102690
十、同步----计时器和线程
http://bbs.pediy.com/showthread.php?t=102892
十一、同步----互斥
http://bbs.pediy.com/showthread.php?t=105373
十二、Shared Event
http://bbs.pediy.com/showthread.php?p=761262
十三、IRP的生命循环
十四、过滤驱动


PS:开发工具发布及更新贴 http://www.kmdkit4d.net/dispbbs.do?boardId=8&ID=17&star=1
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见