45

我刚刚在 Objective-C 中完成了一个库,我将其编译为静态库以进行分发。

我想知道有什么机会可以反编译。

  • 你知道有什么软件可以做到这一点吗?
  • 如果是这样,我怎样才能更好地保护我?

编辑:我的静态库是为 iPhone / ARM 制作的

我创建了一个算法,根据应用程序的一些参数,它可以作为演示或完整代码运行。您使用 X 变量初始化对象并解锁完整版本。我想知道他们是否能够看到这个算法,以便他们可以创建一个密钥生成器。

4

3 回答 3

84

如果它执行,它可以被反编译。由于其动态特性,Objective-C 特别容易反编译成可读代码。如果你想让事情变得更难一些,你可以用纯 C 语言编写大部分代码并剥离可执行文件——这当然会导致应用程序设计更难管理。但对自己诚实:如果有人想破解你的代码,你将无法阻止他们。饼干几乎有无限的时间和热情,并且实际上会因您为阻止它们而付出的任何新颖努力而感到兴奋。还没有人开发出无法破解的软件,世界上最大的公司都在尝试过。你不会比他们做得更好,特别是如果你需要在 Stack Overflow 上询问它。

花点时间来阻止反编译,并用它来改进你的产品——这将有更好的投资回报率。

于 2010-02-25T18:32:28.510 回答
60

目前尚不清楚您要保护自己免受什么侵害。是的,它可以被逆向工程。最简单的工具是otool标准开发者发行版的一部分:

otool -tV <library>

从那以后,它们就发展到IDA Pro之类的东西,它支持 iPhone,非常适合这种工作。在这两者之间,我真的很惊讶我还没有看到针对 iPhone/ARM的otx的返工。最终看到一个出现我不会感到惊讶。如果你想弄清楚事情是如何流动的,以及不同点的数据是什么,当然还有 gdb。

如果您有更多关于您要保护自己免受什么侵害的详细信息,可能会有一些针对性的答案。除此之外,请阅读 Chuck 的评论。

于 2010-02-25T18:43:26.657 回答
5

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled / PopularityOfLibrary

好吧,如果您真的想知道我会尝试自己反编译它。您不会说这是否适用于 PPC、英特尔或 ARM,这会有所不同。这是 Intel i386 Decompiler的反编译器

我不知道你能做些什么(我认为没有太多)来限制这一点。代码总是可以被逆向工程。很高兴您没有使用 java 或 .net。他们的反编译非常好。

于 2010-02-25T13:23:09.187 回答