请假一个问题,如何get/set另一个程序在内存中使用的数据?

balloy 2002-08-17 02:52:43
这两天从网上down了一个小游戏,MarioXp,让我又重温了儿时的经典游戏。可是,打到后来(第4关),因为太难打,我就打不下去了。这时,我突然有个想法,如果可以即使Save/Load,就好了。

仔细想了一下,这就需要把游戏中内存相关部分全部保存到硬盘,再在需要时,从硬盘写到内存。但这不是某个值,而是一个比较复杂的状态。另外,其实我并不太会应用程序编程(我主要的工作是编asp),所以,希望各位大侠能告知一个较为具体的实现思路,谢谢!
另外,这个游戏是windows下的,如果是dos下的呢?区别大吗?谢谢大家!
...全文
88 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
balloy 2002-08-21
  • 打赏
  • 举报
回复
多谢 2ndboy(丢丢) ,以及各位大侠:
正像sclzmbie(梦里红尘) 所说,完整地保存一个程序的内存环境并不简单。所以我退了一步,仅修改Mario的生命数,这个还是比较容易地就实现了(因为有2ndboy的源代码参考,^_^)。非常感谢大家的建议。我以后还是会逐渐尝试Save/Load的,我的mail是 balloy@163.net ,希望能够和对这个话题有兴趣的朋友一起交流,谢谢!

另外,to NowCan(能量、激情、雨水、彩虹——雷雨云),我现在打到第4关,但愿有了无限生命之后,可以多打几关把,呵呵。
2ndboy 2002-08-20
  • 打赏
  • 举报
回复
你试一试就知道在程序运行的时候可不可以写内存了,不要猜测!要是不能的话写修改器干什么用?!
NowCan 2002-08-20
  • 打赏
  • 举报
回复
问问你,MarioXP过了几关了?
我不是大明 2002-08-20
  • 打赏
  • 举报
回复
光用一个
WriteProcessMemory
ReadProcessMemory
怎么能实现你所说的那些功能,当程序在运行时,你怎么又把内存写回!在Window下是有保护的!
而且Window下的程序使用的是逻辑地址!
总之这个东本要做出来有难度,要不破解软件就不用太简单了!动态改变变量的值就可以了!
2ndboy 2002-08-20
  • 打赏
  • 举报
回复
http://2ndboy.yeah.net在“我的作品”里面有个游戏修改工具(有源码),你可以看看
thankeehuang 2002-08-20
  • 打赏
  • 举报
回复
up
renren6250 2002-08-20
  • 打赏
  • 举报
回复
关注
lkcowboy 2002-08-20
  • 打赏
  • 举报
回复
gz
up
sh210 2002-08-20
  • 打赏
  • 举报
回复
强烈关注
balloy 2002-08-20
  • 打赏
  • 举报
回复
哦,多谢,我先试试
sclzmbie 2002-08-20
  • 打赏
  • 举报
回复
写入其它程序的内存是可以的,但要完整保存其它程序的内存环境就不太容易实现。要把其它程序的内存环境完整恢复,没有操作系统的支持不可能完成。
2ndboy 2002-08-19
  • 打赏
  • 举报
回复
你到MSDN里面查下面这两个函数就可以了
WriteProcessMemory
ReadProcessMemory
游戏修改工具就是这么做的
hfycl 2002-08-17
  • 打赏
  • 举报
回复
mark
balloy 2002-08-17
  • 打赏
  • 举报
回复
那,这三个问题怎么解决呢?望告知思路!谢谢!
1。我如何得到指定应用程序正在使用的内存?
2。得到的内存应该如何存放在硬盘上?直接用2进制流吗?
3。我又如何将硬盘上的内容写进指定应用程序写入的内存?
sans 2002-08-17
  • 打赏
  • 举报
回复
如果是在windows下运行dos的程序,应该比较简单吧,把dos程序当作一个一般的进程就可以了。
balloy 2002-08-17
  • 打赏
  • 举报
回复
我是在windows下,运行dos下的程序,也需要写那种内存驻留程序吗?
sans 2002-08-17
  • 打赏
  • 举报
回复
在dos下,软件的运行是单任务的,你的软件必须通过驻留内存的方式存在,通过某个热键激活,得到前台软件的使用内存并不难(但我记不得了),困难的是,由于dos的许多功能不允许重入(包括文件读写功能),故此在使用这些功能时必须保留原来的现场,使用完后还要恢复,这点是最麻烦的,稍微保存得不彻底,恢复得不彻底,系统就会崩溃。
在windows下要简单一些,唯一的问题是windows下的软件使用的内存一般比较多,可能写入磁盘和恢复时比较毫时,还有是否应该考虑磁盘交换文件的问题,由于没有在windows重写过,只是一些想法,仅供参考。
s_phoenix 2002-08-17
  • 打赏
  • 举报
回复
gz
balloy 2002-08-17
  • 打赏
  • 举报
回复
to sans(sans) :
多谢,你的回答让我明确了,这个程序是可以编写的。现在,就dos下的程序向你讨教。因为,我并不太会vc编程,我想知道,如何按照你说的,将640K的内存全部写入硬盘?
我有以下几个问题不懂:
1。我如何得到指定应用程序正在使用的内存?
2。得到的内存应该如何存放在硬盘上?直接用2进制流吗?
3。我又如何将硬盘上的内容写进指定应用程序写入的内存?

谢谢!可能问题有些简单,但我的水平实在。。。,^_^,先谢谢了!
sans 2002-08-17
  • 打赏
  • 举报
回复
dos下比较简单,我原来写过,因为dos下内存就640k,再加上上位内存,不超过1M,将相关的内存全部写入硬盘即可,需要时再调出,唯一的问题是涉及到dos的重入,需要仔细。
windows下由于是多任务的操作系统,且内存是可以移动的,需要考虑的细节要多一些...
加载更多回复(1)

16,473

社区成员

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

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

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