ios - 修改二进制保存游戏数据 (iPhone)

标签 ios iphone binaryfiles

<分区>


想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。

已关闭10 年前

只是为了好玩,我正在尝试破解我为《捉鬼敢死队》iPhone 应用程序 ( AppStore link ) 保存的游戏数据。

以下站点描述了替换 Documents/save.dat与预破解版本:

但是,我想自己修改数据。在我的 save.dat 上使用十六进制编辑器揭示了以下死胡同:

  1. 我无法找到以下任意组合的金额值:(小端、大端)、(无符号、有符号)、(整数、 float )、(4、6、8、16 字节)值),(1 到 15 字节偏移量)
  2. 任何小的变化(即:购买元素)似乎都会完全重写和更改数据文件。
  3. 以 ASCII 格式快速扫描文件,没有发现有关文件格式的任何文本线索。 ADD:事实上,文件中的所有 ASCII 字符串看起来都是完全随机的。
  4. Linux 命令 file只需将文件标识为 data
  5. 压缩文件会放大文件,因此文件可能已被压缩或加密。
  6. 我既没有越狱,也不是 iOS 开发人员,因此我无权访问该应用的内部内存。

该文件如何编码?关于如何手动修改它有什么建议吗?

最佳答案

我也做过类似的事情,只是为了好玩。就我而言,该文件被压缩并包含一个哈希签名以及由游戏可执行文件生成的盐值。在这种情况下,我使用了 gdb,在所有哈希函数上设置断点并检查它们的参数。我实际上不确定如何调试 iPhone 应用程序,但我怀疑除非您越狱设备,否则这是不可能的,因此您可能会在分析文件时陷入困境。

首先下载 HexField(或类似的工具),它非常适合此类工作。尝试根据非常小的变化找到一种模式(努力尽可能少地进行更改,并确保在更改某些内容后杀死游戏)。如果你幸运的话,分数、金钱等等都会被混淆。

如果不容易在文件中看到模式,我将首先研究已知的压缩,例如 gzip(无 header )、deflate、lzma 等(首先查看符号表并在游戏二进制文件上使用类转储一些想法)。由于 file 命令没有给出任何信息,我认为该文件不是简单地进行了 gzip 压缩。

如果做不到这一点,您可能会开始怀疑该文件是否已加密(再次查看符号表)。确定文件是否被压缩或加密的一个好方法是尝试对其进行压缩。如果没有算法能够进一步压缩它,则该文件很可能已被压缩或加密。

黑客快乐! :)

关于ios - 修改二进制保存游戏数据 (iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011352/

上一篇:ios - Facebook 和 Twitter 分享按钮停止工作

下一篇:ios - internetStatus 和 hostStatus 之间的区别

相关文章:

ios - AlamofireImage 没有释放内存

ios - UIView 未填充 TableView tableHeaderView 属性 swift

iphone - 如何知道有多少用户从应用商店下载了应用?

c - 多个小 malloc 与一个大 malloc

linux - 比较二进制文件并仅打印匹配行的偏移量

ios - #import "Project-Swift.h"出现了一些奇怪的问题

ios - SecurityError(DOM 异常 18): Blocked attempt to use history. replaceState()... Angular 5

ios - 无法在 Xcode 8 中使用 Matrix 更改 Size Class

iphone - 如何将另一个类文件中的 IBOutlet 使用到不同的 .m 文件中?

c - 在数组中查找元素时应用程序崩溃