#include<stdio.h> int main() { int i = 10; int *p = (int *)0x41139E; *p = 0x100; printf("%d\n",*p); }
从你的代码上的汇编来看,你0x0041139e是int i = 10;这条指令的地址,代码段是不能写入的,想看i的地址,得看相应的register,并且,i是临时变量,地址也不是确定的
不能随便向指定的内存中写数据。 windows系统为每个进程分配一块内存,每个进程只能操作自己的内存区,不可操作其他进程块中的内存数据的。如果随意充许跨进程块内存写操作,很容易追成进程崩溃. 系统不不太安全了。 如果非要跨进程内存块操作的话,需要供助windows 远程进程调用才可以的。 所以,如果不清楚某个内存地址的是否属于当前进程的可写操作地址,不要随便进行……
这块内存不可以写
C/C++ code?1234567#include<stdio.h>int main(){ int i = 0x100; int *p = &i; printf("%d\n",*p);}//256
#include<stdio.h> int main() { int i = 0x100; int *p = &i; printf("%d\n",*p); }//256
69,371
社区成员
243,080
社区内容
加载中
试试用AI创作助手写篇文章吧