+ -
当前位置:首页 → 问答吧 → unix/linux程序能否把数据保存到自身的可执行文件?

unix/linux程序能否把数据保存到自身的可执行文件?

时间:2010-09-09

来源:互联网

windows有很多exe文件,比如游戏,是把游戏结果保存在自身当中的(不是用注册表,因为我把这个exe拷贝到另一个机器,刚才的分数列表还在)。


unix/linux程序能否把数据保存到自身的可执行文件? 如果可以,需要在编译/编程的时候做些什么?

作者: kgisme170   发布时间: 2010-09-09

有这情况吗?
可以保存在exe?

作者: starzhestarzhe   发布时间: 2010-09-09

一般保存的地方不是注册表就是生成的一个配置文件里吧

作者: starzhestarzhe   发布时间: 2010-09-09

我以前试过,可以,不过需要中间文件的帮助,直接修改本身映像会出现Text Busy的错误~
和编译无关

作者: davelv   发布时间: 2010-09-09

牛人。具体说说。

作者: zhangsuozhu   发布时间: 2010-09-09

例如要保存一个int数据,将其定义到全局变量,然后付给它一个特殊的值例如0x12345678,以便和别的数据区分,或者使用前后各定一个标志字符串来包围起来这个值。
然后写程序,在程序最后加上一个save()函数,该函数的作用就是去复制自身程序映像(文件名可以从argv[0]获取),然后去读写打开这个复制品到特定偏移X,就是上面说的数据的偏移,把新的值写进来。然后删除自身程序映像,把修改后的复制品放回当前位置。

至于这个偏移X如何确定,你可以在复制品里面去搜索上面设定的特殊值或者特殊标识从而定位到X,一般来说用字符串作为特殊标识可靠性比较高。。

作者: davelv   发布时间: 2010-09-09