本次更新是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'; 工具下载链接:93bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3E0E0k6r3E0A6N6o6c8V1i4K6u0W2L8X3g2@1i4K6u0r3k6r3W2K6M7r3u0T1M7#2)9J5k6h3c8G2i4K6y4r3j5X3!0S2M7X3c8u0k6q4)9K6c8o6S2Q4x3U0k6u0c8q4)9K6c8o6p5%4i4K6t1$3M7%4c8S2M7W2)9K6c8o6p5`.
[培训]科锐逆向工程师培训第53期2025年7月8日开班!