源代码:
.386
.model flat,stdcall
option casemap:none
include d:\masm32\include\windows.inc
include d:\masm32\include\gdi32.inc
includelib d:\masm32\lib\gdi32.lib
include d:\masm32\include\user32.inc
includelib d:\masm32\lib\user32.lib
include d:\masm32\include\kernel32.inc
includelib d:\masm32\lib\kernel32.lib
.data?
.const
FileName db 'time.lc',0
szBuffer db 4096 dup (?)
.code
LoadSysFile proc ;检查文件是否存在(不存在则建立),读入文件中的数据
;local FileNumber ;文件号
local @FD:WIN32_FIND_DATA
local @FHd,@BRead
invoke FindFirstFile,addr FileName,addr @FD ;查找文件
.if eax==INVALID_HANDLE_VALUE;如果文件不存在
ret ;退出
.endif
invoke FindClose,eax;退出查找文件
invoke CreateFile,addr FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL,0 ;根据文件名打开文件(只读)
.if eax==INVALID_HANDLE_VALUE ;如果打开文件有错
ret;退出
.endif
mov @FHd,eax
xor eax,eax
mov @BRead,eax
.while TRUE
mov esi,offset szBuffer
invoke ReadFile,@FHd,addr szBuffer,sizeof szBuffer,addr @BRead,0;读入文件内容*****************就是这一句始终返回0值
.break .if !@BRead
.endw
invoke CloseHandle,@FHd;关闭文件
ret
LoadSysFile endp
_WinMain proc
local @Str
call LoadSysFile ;检查文件是否存在(不存在则建立),读入文件中的数据
ret
_WinMain endp
Start:
call _WinMain
invoke ExitProcess,NULL
end Start
故障现象:
我用OD跟踪数据,ReadFile返回值为0,从文件中实际读入的字符数也为0。我已经搞了一天了,怎么也解决不了。高手帮帮忙啊
[课程]Linux pwn 探索篇!