📄 _file.asm
字号:
;====================================================================
_ReadFile Proc
local @hFile,@dwBytesRead
; int 3
;********************************************************************
; 展开环境变量 读取文件
;********************************************************************
invoke ExpandEnvironmentStrings,addr szFile,offset szFileName,sizeof szFileName
invoke CreateFile,offset szFileName,GENERIC_READ,FILE_SHARE_READ,0,\
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
.if eax != INVALID_HANDLE_VALUE
; 有初使化文件则读取该文件到内存中
mov @hFile,eax
invoke ReadFile,@hFile,addr szBuffer,sizeof szBuffer,addr @dwBytesRead,0
invoke CloseHandle,@hFile ; 关闭打开的文件
.endif
Ret
_ReadFile Endp
;====================================================================
; 保存内存中的规则到文件
;====================================================================
_WriteFile Proc
local @hFile,@dwBytesWrite
; int 3
;********************************************************************
; 展开环境变量 读取文件
;********************************************************************
invoke ExpandEnvironmentStrings,addr szFile,offset szFileName,sizeof szBuffer
invoke CreateFile,addr szFileName,GENERIC_WRITE,0,0,\
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
mov @hFile,eax
invoke WriteFile,@hFile,addr szBuffer,sizeof szBuffer,addr @dwBytesWrite,NULL
invoke FlushFileBuffers,@hFile
invoke CloseHandle,@hFile ; 关闭打开的文件
Ret
_WriteFile Endp
;====================================================================
; 读取运行中驱动的缓冲区
;====================================================================
_ReadBuffer Proc
local @hFile,@dwOutBytes
; int 3
invoke CreateFile,offset szIpfilter,GENERIC_READ or GENERIC_WRITE,\
FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL
.if eax != INVALID_HANDLE_VALUE ; 打开成功后返回句柄
mov @hFile,eax
invoke DeviceIoControl,@hFile,CTL_Read,offset szBuffer,\
sizeof szBuffer,offset szBuffer,sizeof szBuffer,\
addr @dwOutBytes,0
invoke CloseHandle,@hFile
.endif
Ret
_ReadBuffer Endp
;====================================================================
; 保存运行中驱动的缓冲区
;====================================================================
_WriteBuffer Proc
local @hFile,@dwOutBytes
; int 3
invoke CreateFile,offset szIpfilter,GENERIC_READ or GENERIC_WRITE,\
FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL
.if eax != INVALID_HANDLE_VALUE ; 打开成功后返回句柄
mov @hFile,eax
invoke DeviceIoControl,@hFile,CTL_Write,offset szBuffer,\
sizeof szBuffer,offset szBuffer,sizeof szBuffer,\
addr @dwOutBytes,0
invoke CloseHandle,@hFile
.endif
Ret
_WriteBuffer Endp
;====================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -