2012年7月5日星期四

NO_API.ASM


;刚开始接触汇编的时候,心想:能不能不用中断,不用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。

没有评论:

发表评论