24小时热门版块排行榜    

查看: 959  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] NSFC申报书里申请人简历中代表性论著还需要在申报书最后的附件里面再上传一遍吗 20+5 NSFC2026我来了 2026-03-10 14/700 2026-03-15 23:53 by 不负韶华的虎
[考研] 327求调剂 +6 拾光任染 2026-03-15 11/550 2026-03-15 22:47 by 拾光任染
[考研] 309求调剂 +4 花与叶@ 2026-03-10 4/200 2026-03-14 21:26 by a不易
[考研] 265求调剂 +4 威化饼07 2026-03-12 4/200 2026-03-14 17:23 by userper
[考研] 330求调剂 +3 ?酱给调剂跪了 2026-03-13 3/150 2026-03-14 10:13 by JourneyLucky
[考研] 化学工程321分求调剂(南京工业,浙江工业) +3 大米饭! 2026-03-09 4/200 2026-03-14 02:34 by JourneyLucky
[考研] 求调剂,药学 +3 归零lbm 2026-03-09 5/250 2026-03-14 02:21 by JourneyLucky
[考研] 材料与化工 一志愿山大 321分 求调剂 +7 每天散步 2026-03-09 8/400 2026-03-14 02:18 by JourneyLucky
[考研] 332分材料工程调剂 +3 莓好时光海苔 2026-03-09 3/150 2026-03-14 02:03 by JourneyLucky
[考研] 085600求调剂 +3 a邵星池 2026-03-09 3/150 2026-03-14 01:32 by JourneyLucky
[考研] 265求调剂 +9 小木虫085600 2026-03-09 12/600 2026-03-14 01:11 by JourneyLucky
[考研] 312求调剂 +6 陌宸希 2026-03-10 6/300 2026-03-14 00:40 by JourneyLucky
[考研] 求调剂(材料与化工327) +4 爱吃香菜啦 2026-03-11 4/200 2026-03-13 22:11 by JourneyLucky
[考研] 295求调剂 +3 小匕仔汁 2026-03-12 3/150 2026-03-13 15:17 by vgtyfty
[考研] 070303一志愿西北大学学硕310找调剂 +3 d如愿上岸 2026-03-13 3/150 2026-03-13 10:43 by houyaoxu
[考研] 材料专硕274一志愿陕西师范大学求调剂 +4 薛云鹏 2026-03-13 4/200 2026-03-13 10:40 by 学员8dgXkO
[考研] 纺织、生物、化学、材料相关专业招生了 +4 耶耶业 2026-03-09 7/350 2026-03-12 19:05 by Equinoxhua
[考博] 2026年博士申请 +3 QwQwQW10 2026-03-11 3/150 2026-03-12 17:58 by gxch43
[考研] 083000环境科学与工程调剂 +8 mingmingry 2026-03-09 9/450 2026-03-11 10:23 by 沙漠之狐994
[考研] 一志愿:武汉理工,材料工程,英二数二 总分314 +3 2202020125 2026-03-10 4/200 2026-03-10 13:54 by xiongyaxuan
信息提示
请填处理意见