13

我有一个应用程序并最近发布到 Cydia。它已被其他人破解并发布在洪流网站上。我内部有一个二进制校验和验证机制,他们能够根据他们对二进制文件所做的更改创建一个新的校验和文件。他们编辑了两个函数并将其反编译并发布到种子。

我看到可以看到函数和类的实际实现。但是为了编辑函数,他们必须找到该函数的地址并通过 HEX EDITOR 进行编辑。我不想让它“无法破解”,但我真的很想知道他们是如何破解的。

如何在 iOS 二进制文件中编辑函数并重新编译?例如,我的一个课程中有以下方法。

- (id) getSomething {

   return @"Something";
}

我想编辑这个函数的返回值。那可能吗?

4

1 回答 1

6

通常,您不会“重新编译”它。只需将文件提供给 IDA,查找字符串、函数调用或您要查找的任何内容,然后使用十六进制编辑器或类似工具在汇编级别编辑文件。在大多数情况下,只需将条件跳转更改为无条件跳转或 nop(无操作)就足够了。如果要更改返回值,则必须付出更多的努力,但是根据我的经验,您可以直接在二进制文件中编辑 char 序列,如果它被指定为常量或初始值 - 或者您只需编写一个全新的功能并将其汇编代码“复制”到原始文件中。您只需要确保您的新功能不会占用比原来更多的空间 - 否则一切都会变得更加复杂。我希望这就是你所要求的,

于 2012-05-14T07:44:51.810 回答