是否可以编辑和重新编译iOS二进制文件?

时间:2012-05-14 04:10:38

标签: ios reverse-engineering ida otool

经过大量时间与Google合作,我决定在这里提出这个问题。但我无法得到我的问题的答案。以下是详细信息:

我有一个申请并最近发布到Cydia。它已被其他人破解并在torrent网站上发布。有趣的是我内部有一个二进制校验和验证机制,他们能够破解整个东西,并根据他们对二进制文件所做的更改创建了新的校验和文件。他们编辑了两个函数并对其进行反编译并将其发布给种子。

所以我已经与IDA Pro进行了一些研究,并看到它可以看到函数和类的实际实现。但是为了编辑函数,他们必须找到该函数的地址并通过HEX EDITOR编辑它。这部分让我感到困惑,是否有人帮我这个?我不想让它“不可撼动”:) ..我猜不是那么容易。 :)但我真的想知道他们是如何破解的? :)

我的问题是如何编辑iOS二进制文件中的函数并重新编译它?例如,我的一个班级中有以下方法。

- (id) getSomething {

   return @"Something";
}

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

1 个答案:

答案 0 :(得分:6)

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