;刚开始接触汇编的时候,心想:能不能不用中断,不用api来建立一个文件。
;今天终于在应用层实现了不用api建立文件。
;在驱动中不发送irp,不用中断能建立文件不?正在思考中!
;不足之处,敬请指导。
.386
.model flat, stdcall
option casemap:none
.data
align 4
iosb dd 2 dup (0)
fileHandle dd 0
align 2
szcorrey dw '\','?','?','\','c',':','\','c','o','r','r','e','y','.','t','x','t',0
align 4
fileName dw sizeof szcorrey -2
dw sizeof szcorrey
dd offset szcorrey
fileAttributes dd 18h,0,offset fileName,40h,0,0
buffer db "made by correy",13,10,
"QQ:112426112",13,10,
"Email:leguanyuan at 126 dot com",13,10,
"Homepage:http://correy.webs.com",13,10,0
.code
sysenter macro
dw 340fh
endm
myKiFastSystemCall proc ;这个用宏实现可以不?
mov edx,esp
sysenter ;在2000中可以使用int 2eh
ret
myKiFastSystemCall endp
myCreateFile proc hProcess:dword,uExitCode:dword ,x1:dword,x2:dword,x3:dword,x4:dword,x5:dword,x6:dword,x7:dword,x8:dword,xx:dword
pop ebp ;此处主要是栈平衡。
mov eax,25h ;此处根据操作系统而改变。
call myKiFastSystemCall
retn 2ch
myCreateFile endp
myWriteFile proc hPros:dword,uExde:dword ,sss:dword,aa:dword,aadddd:dword,aaaa:dword,ww:dword,wwww:dword,wwwwd:dword
pop ebp
mov eax,112h
call myKiFastSystemCall
retn 36
myWriteFile endp
myNtclose proc hros:dword
pop ebp
mov eax,19h
call myKiFastSystemCall
ret
myNtclose endp
start:
;int 3
;我想不用自定义函数,应该也能实现,我想这应该容易实现。
invoke myCreateFile,addr fileHandle,1F01ffh,addr fileAttributes,addr iosb,0,1,0,2,060h,0,0
invoke myWriteFile,fileHandle,0,0,0,addr iosb,addr buffer,sizeof buffer-1,0,0
invoke myNtclose,fileHandle
ret
end start
;made at 2011.10.13
参考:夜月的Masm中调用ZwOpenSection时应该注意的问题 (1千字) http://www.pediy.com/bbshtml/BBS5/pediy50467.htm
感谢:月夜对我的众多帮助。推荐一个他的产品:惟思可视化集成开发环境。下载地址是:http://www.vsysv.com/ide。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课