奇怪的变量地址(内存管理方面)

loseme915 2006-02-14 08:38:28
有什么方法可以在每次运行程序的时候让变量地址都不一样。
比如:变量A第一次运行时地址是0xaaaaaaaa第二次运行时地址变为0xbbbbbbbb
地址变化好象是随机的,怎么会这样呢?是用什么方法实现的?有人知道么?
...全文
122 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangk 2006-02-15
  • 打赏
  • 举报
回复
1.查到变量地址的保存位置,而不是变量的保存位置。
2.查找到操作代码的地址,注入修改。因为代码段在正常运行后位置是不会改变的。
loseme915 2006-02-15
  • 打赏
  • 举报
回复
看了一下WINDOWS核心编程,知道了一个大概。但奇怪的是别人写的辅助程序怎么呼出来就能锁定地址查到数据呢?(都是针对同一个游戏)。
loseme915 2006-02-15
  • 打赏
  • 举报
回复
经过N次试验,发现每次重启电脑然后运行该游戏,我需要的内存地址中的数据是我想要的。所以每次开机以后我的程序都可以正常工作。但关闭游戏如果不重启电脑就不行。现在只能将就用着咯
Featured 2006-02-14
  • 打赏
  • 举报
回复
当然不一样了
lsaturn 2006-02-14
  • 打赏
  • 举报
回复
你要感兴趣,建议跟踪一下new的汇编代码:)
loseme915 2006-02-14
  • 打赏
  • 举报
回复
做了个试验确实是每次NEW都有不同的地址,那么每次NEW的时候是从什么地方开始分配地址的呢?还有一个分配空间的函数记不得了。这两个函数工作原理一样么?它们从什么地方开始给新变量开辟空间呢?
loseme915 2006-02-14
  • 打赏
  • 举报
回复
是不是每次初始化的时候都用NEW来创建一个结构,那么这个结构的地址都不样呢?
cozil 2006-02-14
  • 打赏
  • 举报
回复
那是因为你没有找到真正的数据地址。游戏通常的做法是把该数据赋给某变量,再用此变量的值进行操作。当你跟踪到该值的处理代码时,再往上看几行应该就能找到真正的地址了
lsaturn 2006-02-14
  • 打赏
  • 举报
回复
恩,变化中总有不变的:)你要找到不变的地方
loseme915 2006-02-14
  • 打赏
  • 举报
回复
DentistryDoctor(MVP-My heart will fly,in the sky.)
应该不是指针初始化的问题。
loseme915 2006-02-14
  • 打赏
  • 举报
回复
truewill(无处不在)
我在做一个游戏辅助工具,发现跟踪的数据,在游戏重新启动以后,该数据地址变了。而且每次启动以后地址就变一次,具体偏移值可能是随机出现的,因为变动很大。所以每次都要先搜索一次内存才能确定数据地址,这样很麻烦的。所以想知道它是怎么实现的,然后看怎么解决这个问题。
DentistryDoctor 2006-02-14
  • 打赏
  • 举报
回复
你的指针没有初始化?
truewill 2006-02-14
  • 打赏
  • 举报
回复
你每次new的东西都不delete,内存不释放,自然每次的地址不一样啦
呵呵,开玩笑拉 ^_^

这个是OS的事情,为什么要搞这个呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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