不能把变量存在内存某一地址吗

zjtzlqr 2013-04-13 09:41:12
#include "stdio.h"

int main(void)
{
*(int *)(0x12341232) = 132;
printf("%d",*(int *)(0x12341232));
}

编译环境是vs2005
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
大浩船长 2013-04-14
  • 打赏
  • 举报
回复
从技术层面来说可以将值写入任何内存地址,但是从一般的用户程序来说不行。操作系统为了防止用户有意或无意的破坏行为,对用户可操作的地址空间做了限制。用户只能操作用户空间,不能操作内核空间。
wizard_tiger 2013-04-14
  • 打赏
  • 举报
回复
这个不是不可以,但是你要保证在你使用这片内存时,这片内存没有任何作用并且可用。
xiaohuh421 2013-04-13
  • 打赏
  • 举报
回复
是可以的, 但是你要确宝你写的 *(int *)(0x12341232) 是一个可以访问的合法地址. 比如 游戏外挂中, 就经常这样用, 来取得游戏中的一些数据, 比如人物的当前血蓝值什么的.
傲世孤尘 2013-04-13
  • 打赏
  • 举报
回复
还能这样用。。。。顶一个
www_adintr_com 2013-04-13
  • 打赏
  • 举报
回复
可以, 先向系统申请一下那块内存区域就行了.

#include "stdio.h"
#include <Windows.h>

int main(void)
{
	VirtualAlloc((LPVOID)(DWORD_PTR)0x12340000, 0x10000, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE);
	*(int *)(0x12341232) = 132;	
	printf("%d",*(int *)(0x12341232));
	// VirtualFree ...
}
海的神话 2013-04-13
  • 打赏
  • 举报
回复
按理说应该是可以的,只要你确定那个地址你有权限可以用
AnYidan 2013-04-13
  • 打赏
  • 举报
回复
lz 可以保证 的确有此地址,此时可用 且 你有权“写入”?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧