⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iotrap.asm

📁 windows下汇编语言 学习汇编语言好助手
💻 ASM
字号:
;***************************
;文件:IOTrap.asm          *
;功能:演示设置和处理IO陷阱*
;***************************
    .386p
    include C:\98DDK\inc\win98\vmm.inc
    include C:\98DDK\inc\win98\shell.inc
    include C:\98DDK\inc\win98\debug.inc

	PORT_NUM = 800H				;端口号

Declare_Virtual_Device		\
				IOTRAP, 	\
				1, 0, 		\
				IOTRAP_control,	\
    			Undefined_Device_ID, Undefined_Init_Order
;消息分派
BeginProc IOTRAP_control,	LOCKED
    Control_Dispatch Sys_Dynamic_Device_Init, OnDynInit, cCall
    Control_Dispatch Sys_Dynamic_Device_Exit, OnDynExit, cCall
    Control_Dispatch W32_DeviceIOControl,	  OnDynCtl,	cCall
    clc
    ret
EndProc IOTRAP_control

;数据段
VxD_PAGEABLE_DATA_SEG 
    szCaption	db "IO Trapping",0 
    szText		db "Ring 3 程序访问 800H 端口",0
    szSuccess	db "Init OK",0
    szFail		db "Init Fail",0
VxD_PAGEABLE_DATA_ENDS 

;代码段
VxD_PAGEABLE_CODE_SEG 
BeginProc MsgBox
    VMMCall	Get_sys_vm_handle 
    mov		eax,MB_OK+MB_ICONEXCLAMATION 
    mov		edi,OFFSET32 szCaption
    xor		esi,esi 
    xor		edx,edx 
    VxDCall	SHELL_Message 
    ret 
EndProc MsgBox

BeginProc IOTrapProc		;IO陷阱处理过程
	lea		ecx,szText
	call	MsgBox
	mov		eax,12345678H	;设置返回值
	ret
EndProc IOTrapProc

BeginProc OnDynInit
	lea     esi, IOTrapProc
	mov     edx, PORT_NUM	;安装IO陷阱处理过程
	VMMCall Install_IO_Handler
	mov		ecx,OFFSET32 szSuccess
	jnc		install_ok
	mov		ecx,OFFSET32 szFail
install_ok:
	call	MsgBox
	mov		eax,1
	ret
EndProc OnDynInit

BeginProc OnDynExit
	mov     edx, PORT_NUM	;卸装IO陷阱处理过程
	VMMCall Remove_IO_Handler
	mov		eax,1
	ret
EndProc OnDynExit

BeginProc OnDynCtl
	xor		eax,eax
	ret
EndProc OnDynCtl

VxD_PAGEABLE_CODE_ENDS 

    end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -