因为 VirtualAllocEx 这个申请内存的时候,
VirtualAllocEx(进程句柄,0,sizel,MEM_COMMIT,PAGE_READWRITE);
最后一个参数表示是可读写,但不可执行
应该是
PAGE_EXECUTE_READWRITE
0x40
再提示一下
MEM_COMMIT 的十进制是
4096
总结:汇编或者win api 申请内存的时候,要考虑是否需要代码执行权限,否则会报错。
其二,所有api 都可以在谷歌和csdn上找到参数详细说明,因为我们很多时候要调试和注意参数的值别填写错了,尤其是使用别人提供代码的时候
其三,当你不会写汇编的时候很简单,用CE或者OD进入软件代码块内存中,各种常见指令格式都一目了然
其四,其实用c或者c++的api 去hook是最好的,像易语言也可以,但是易语言的库非常不标准,会被很多人无数次的封装过,也不稳定,但是好处就是容易看懂,毕竟c代码的各种结构体类型会看得人发晕。但是长远看还是要多写c,windows本身就是c写的。而易只不过调用的win api (本身也是c写的)