读书人

关于VirtualProtect的有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

关于VirtualProtect的问题
最近看到VirtualProtect这个API,但是自己写的时候却调用不成功...源代码如下:

.386
.model flat, stdcall
option casemap :none
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
; Include 文件定义
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
includewindows.inc
includeuser32.inc
includelibuser32.lib
includekernel32.inc
includelibkernel32.lib
includecomdlg32.inc
includelibcomdlg32.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
invokeExitProcess,NULL
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
endstart

[解决办法]
失败的原因是最后一个参数赋值为null

读书人网 >汇编语言

热点推荐