首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

关于VirtualProtect的有关问题

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

关于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

热点排行