|
 |
推荐文章 |
|
|
|
|
|
|
|
|
|
|
| 作者:电子管 日期:2005-8-1 15:31:21 |
|
|
下载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:盘 |
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
责任编辑: 原点 |
投稿作者: 电子管 |
|
|
信息来源: 网络 |
录入时间: 2005-8-1 15:31:21 |
|
|
|
| |
|