一个进程中数据的虚拟内存地址为什么老变?

scaoso 2005-11-24 11:46:01

本人要写一个程序监测app.exe程序的某个数值变化,如果App.exe的被监测的这个值大于“500”我的程序就开始动作,如果app.exe这个值是小于“500”,我的程序也停止动作。


app.exe以前的版本我用FPE,金山游侠,查找到app.exe进程中存放被监测值得地址,&H007FDAC8.
但是近期,App.exe改版了。被监测内存地址发生了变化,我再用FPE或者金山游侠无法使用常规方法即:当被搜索的值发生变化呼出FPE查询筛选,直到确定内存地址,然后修改数据。原因是目标内存地址老变,如: 属性值是567,假设查找第一遍就找到了唯一的内存地址与之对应&H007FDAC8 然是返回app.exe。,立刻再呼出FPE观察, 以前的内存地址的&H007FDAC8里面的值已经不是存放着567了,通过内存浏览,发现以前的567跑到&H007FFA32,返回App.exe,立刻再呼出FPE观察,发现存放567的数值又跑了,跑到&H0080FA34。。。。。这样无限制的乱跑下去,每次新建查询任务,查找567都能找到,但是每次找到567的内存地址都在变。。。。

想请问各位,谁遇到这样的问题?这样类型进程的怎么锁定我想查找的值?他为什么老变?难道真的没法用ReadProcessMemory取值了么?
...全文
209 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
scaoso 2005-11-30
  • 打赏
  • 举报
回复
好的,现感谢各位达人的热心指点,我顶起来一下,看看还有没有新的解决方案,下午17点我来准时结帖 *_*
oyljerry 2005-11-26
  • 打赏
  • 举报
回复
需要找出改变的方法先
ggw 2005-11-26
  • 打赏
  • 举报
回复
removable is basic of preemptive OS.
fbmsf 2005-11-26
  • 打赏
  • 举报
回复
我们不知道,app.exe 用的什么原里。所以不知道怎么来对付他。

必须知道他用什么方法来实现地址的改变的才可以。
thisisll 2005-11-24
  • 打赏
  • 举报
回复
下班了
加油啊!!
搞好了
给我说下思路
thisisll 2005-11-24
  • 打赏
  • 举报
回复
可以在他传变量的时候跟吧
函数内部跟地址,出了函数就跟值

这样也许会很麻烦~~
饿补一下内存管理吧~~
scaoso 2005-11-24
  • 打赏
  • 举报
回复
-。- 我们一起B4他!

最关键就是怎么解决?有什么办法,集思广益大家帮忙想想哇!
thisisll 2005-11-24
  • 打赏
  • 举报
回复
很显然,他是用局部变量来传递保存一个值。因为局部变量是通过堆栈实现的。他只要在调用函数时不断将数值传进传回就可以达到这样的效果了。


原来如此啊~~~
scaoso 2005-11-24
  • 打赏
  • 举报
回复
There's reply about this Question form VB Zone:

回复人: of123() ( ) 信誉:125 2005-11-24 16:23:00 得分: 0

很显然,他是用局部变量来传递保存一个值。因为局部变量是通过堆栈实现的。他只要在调用函数时不断将数值传进传回就可以达到这样的效果了。



/tell of123 thanks for your reply, but 我怎么才能用ReadProcessMemory取到app.exe中的这个数值呢?有什么方法,给点思路,再次谢谢。
scaoso 2005-11-24
  • 打赏
  • 举报
回复
/tell fbmsf(FBM) 呀。。。这就有点难度了,能不能稍微给点提示或者指点,用什么软件调试App.exe,怎么看他用的什么方法呢?有没有相关的文档参阅或者例子呢?Thanks...
fbmsf 2005-11-24
  • 打赏
  • 举报
回复
调试app.exe 看他用的什么方法。

你在更新你的程序。
thisisll 2005-11-24
  • 打赏
  • 举报
回复
那他释放前肯定会把数据复制的
那你就不断的找
看有没有同时两个一样的数据
其中之一就是新的地址

我随便说说我的思路
scaoso 2005-11-24
  • 打赏
  • 举报
回复
如果app.exe不断分配释放,不断的变化,那我该如何才能跟踪到他?


我程序的作用是找到显示我需要数值的地址,然后监视他,根据他的变化按照我的要求作出不同的变化。

现在我连那个我要监控的数值都找不到,我的程序也没办法根据App.exe的变化而发生变化。
thisisll 2005-11-24
  • 打赏
  • 举报
回复
既然是你自己的程序
那你就让他不断的找就好了
thisisll 2005-11-24
  • 打赏
  • 举报
回复
会不会是他不断分配释放
然后不断的变地址??
scaoso 2005-11-24
  • 打赏
  • 举报
回复
改版前的App.exe我可以成功的找到锁定我想要的数值,并且我的程序也能正常的工作,

只是最近app.exe改版了。。。新的App.exe才发现这样的问题的,我怀疑是App.exe为了防止我的软件继续使用ReadPrecessMemory取他的值做的设置。

怎么才能找到我想检测值的静态的虚拟内存地址呢?
fireinsky 2005-11-24
  • 打赏
  • 举报
回复
学习。
thisisll 2005-11-24
  • 打赏
  • 举报
回复
原来是人家故意的啊
帮你顶
scaoso 2005-11-24
  • 打赏
  • 举报
回复
app.exe从头至尾不释放,我要锁定的的数值在进程的虚拟内存地址段里面无常的变化 。。。。

现在好象很多游戏为了防止修改也是这样的,不知道这是什么原理,怎么让他“静”下来?
thisisll 2005-11-24
  • 打赏
  • 举报
回复
你说的情况倒没碰到过
在分配到释放他不会变
加载更多回复(2)

16,472

社区成员

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

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

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