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

Ind*_*eek 12 reverse-engineering otool ida ios

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

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

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

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

- (id) getSomething {

   return @"Something";
}
Run Code Online (Sandbox Code Playgroud)

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

jim*_*pic 6

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