当前位置: 代码迷 >> 汇编语言 >> 关于VirtualProtect的有关问题
  详细解决方案

关于VirtualProtect的有关问题

热度:2913   发布时间:2013-02-26 00:00:00.0
关于VirtualProtect的问题
最近看到VirtualProtect这个API,但是自己写的时候却调用不成功...源代码如下:

.386
.model   flat,   stdcall
option   casemap   :none
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
;   Include   文件定义
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include comdlg32.inc
includelib comdlg32.lib
;*****************************************

.data?
lpAdd   dd   ?
lpMem   dd ?
;.............................................

.code
start:
invoke   VirtualAlloc,NULL,4096,MEM_RESERVE,PAGE_NOACCESS
.if   eax
mov   lpAdd,eax
.endif

invoke   VirtualAlloc,lpAdd,4096,MEM_COMMIT,PAGE_READWRITE
.if   eax
mov   lpMem,eax
.endif
                                    ;就是这里了,总是调用失败   -_-!
invoke   VirtualProtect,lpAdd,4096,PAGE_READONLY,NULL
invoke ExitProcess,NULL
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
end start

------解决方案--------------------------------------------------------
失败的原因是最后一个参数赋值为null
  相关解决方案