下载ring0.bat... Kmdkit推荐的方法是把汇编源程序写成批处理bat文件,以天杀的ring0.sys为例 把下面的代码存成ring0.bat
;@echo off ;goto make ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .586P ; 保护模式 .model flat,stdcall option casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include /masm32/include/w2k/ntddk.inc ; 中断相关数据结构 IDT_REG STRUCT limit WORD ? base DWORD ? IDT_REG ENDS
; 中断描述符 INT_DESCRIPTOR STRUCT offs0_15 WORD ? sel WORD ? paramcnt BYTE ? attrs BYTE ? offs16_31 WORD ? INT_DESCRIPTOR ENDS
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代码段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code szBuffer db 16 dup(0) ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MyIntFunc proc push edx call eax iretd MyIntFunc endp
;==================================================================== AddMyInt proc uses edi local @IDT
sidt szBuffer mov edi,(IDT_REG ptr [szBuffer]).base add edi,21h*8
; 使用Int21中断,该中断在Win2k下没有使用 ; cli mov eax,offset MyIntFunc mov [edi],ax shr eax,16 mov [edi+6],ax ; 设置入口地址 mov [edi+2],cs ; 设置段地址 ; 设置Ring3可以访问 mov WORD ptr [edi+4],0EE00h ; sti
ret AddMyInt endp ;==================================================================== WdmUnload proc DriverObject:DWORD local @IDT
sidt szBuffer mov edi,(IDT_REG ptr [szBuffer]).base add edi,21h*8 xor eax,eax mov [edi],ax mov [edi+6],ax ; 设置入口地址 mov [edi+2],ax ; 设置段地址 mov WORD ptr [edi+4],ax
ret WdmUnload endp ;==================================================================== DriverEntry proc DriverObj:DWORD,RegistryPath:DWORD
mov eax,DriverObj assume eax:ptr DRIVER_OBJECT mov [eax].DriverUnload,offset WdmUnload assume eax:nothing invoke AddMyInt
xor eax,eax ret DriverEntry endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end DriverEntry
:make
set drv=ring0
/masm32/bin/ml /nologo /c /coff %drv%.bat /masm32/bin/link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native
%drv%.obj
del %drv%.obj
echo. pause rem =====以上为ring0.bat的内容=============
双击ring0.bat,就完成了编译连接工作,生成了ring0.sys 怎么样?简单吧?
Kmdkit巧妙地把批处理和asm文件结合起来,使编译更傻瓜化。 需要修改代码时,在ring0.bat上点鼠标右键,点编辑。 需要编译时直接双击它. 需要注意的是,/masm32 和ring0.bat必须在一个磁盘上,如masm32安装在c:盘,ring0.bat也必须在c:盘  
|