当前位置: 代码迷 >> 汇编语言 >> 下边汇编函数里的两条语句会不会内存越界
  详细解决方案

下边汇编函数里的两条语句会不会内存越界

热度:343   发布时间:2016-05-02 04:56:54.0
下面汇编函数里的两条语句会不会内存越界
对下面的
invoke RtlZeroMemory,  addr @bufTemp1, 10
invoke RtlZeroMemory, addr @bufTemp2, 20
两行代码有疑问,里面的10和20是怎么来的,回不内存越界?



_openFile proc

local @stOF: OPENFILENAME
local @hFile, @hMapFile
local @bufTemp1; 十六进制字节码
local @bufTemp2; 第一列 
local @dwCount; 计数,逢16则重新计
local @dwCount1; 地址顺号
local @dwBlanks; 最后一行空格数

invoke RtlZeroMemory, addr @stOF, sizeof @stOF
mov @stOF.lStructSize, sizeof @stOF
push hWinMain
pop @stOF.hwndOwner
mov @stOF.lpstrFilter, offset szExePe
mov @stOF.lpstrFile, offset szFileName
mov @stOF.nMaxFile, MAX_PATH
mov @stOF.Flags, OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST
invoke GetOpenFileName, addr @stOF;  让用户选择打开的文件
.if !eax
jmp @F
.endif
invoke CreateFile, addr szFileName, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL,\
             OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL
 .if eax != INVALID_HANDLE_VALUE
  mov @hFile, eax
  invoke GetFileSize, eax, NULL ;获取文件大小
  mov totalSize, eax
 
      .if eax
        invoke CreateFileMapping, @hFile, NULL, PAGE_READONLY, 0,0, NULL
        .if eax
         mov @hMapFile, eax
         invoke MapViewOfFile,  eax, FILE_MAP_READ, 0,0,0
         .if eax
         mov lpMemory,eax ;获得文件在内存的映像起始位置
         assume fs:nothing
         push ebp
         push offset _ErrFormat
         push offset _Handler
         push fs:[0]
         mov fs:[0], esp
        
         ; 开始处理文件
         ; 缓冲去初始化
         invoke RtlZeroMemory,  addr @bufTemp1, 10
         invoke RtlZeroMemory, addr @bufTemp2, 20
         invoke RtlZeroMemory, addr lpServicesBuffer, 100
         invoke RtlZeroMemory, addr  bufDisplay, 50
        
         mov @dwCount, 1
         mov esi, lpMemory
         mov edi, offset bufDisplay
        
         ;将第一列写入lpServicesBuffer
         mov @dwCount1,0
         invoke wsprintf, addr @bufTemp2, addr lpszFilterFmt4, @dwCount1
  相关解决方案