我们正在为iOS分发一个软件模块。因为,Apple正在提倡bitcode甚至强制某些设备上的应用程序(watchOS / tvOS) - 迫使我们用bitcode提供这个软件模块(静态库)。
关注的是bitcode如何安全地从任何人进行逆向工程和反编译(如java字节码)以及如何防范它?任何人都可以轻松地从网站下载库并从中提取bitcode(IR)并进行反编译。这里有一些有价值的信息
https://lowlevelbits.org/bitcode-demystified/
Bitcode可能不会关注应用程序,因为苹果会剥离它,但肯定似乎是静态库的一个问题。
任何见解?
答案 0 :(得分:8)
正如链接说明"犯罪分子可以获取您的应用程序或库,从中检索[代码]并窃取您的“秘密算法”。"是的。完全正确。
此外,如果您运送非bitcode库,那么" malefactor可以获取您的应用或库,从中检索[code]并窃取您的'秘密算法'。"
此外,如果您发送非bitcode应用程序,那么犯罪分子可以获取您的应用程序或库,从中检索[代码]并窃取您的“秘密算法”。"
没有不这样的情况。像Hopper一样便宜的工具(我选择的工具,但也有一些更便宜的解决方案)和详细的IDA可以将您的函数反编译成可通过的C代码。
如果你正在使用Cocoa(ObjC或Swift),你可以更容易进行逆向工程,因为它很容易动态地反省Cocoa。
这不是一个可以解决的问题。应用程序和库都可以尝试使用混淆技术,但它们很复杂,很脆弱,并且通常需要大量的费用或专业知识(通常都需要)。无论如何,当人们破坏它时,你需要不断改进你的混淆。对于一个图书馆来说这是毫无意义的,因为一旦泄漏,你可以重新保护它,但是你可以试试。
它会泄漏。这是不可解决的。 Bitcode对此并没有太大的改变。读取IR可能比ARM装配更简单,但不是那么多,当然,如果您保护的东西很小(如小算法或密钥),则肯定不会。
那里有一些混淆供应商。产品推荐偏离Stack Overflow主题(因为它们会吸引垃圾邮件),但会搜索" ios混淆"而且你会发现它们。在这个领域,因为它只是狡猾的隐藏" (不是安全或加密)你通常得到你付出的代价。开源解决方案没有多大意义,因为整个过程都很棘手并且隐藏了你如何做到这一点。我已经使用了一些开源混淆库,这些库使得更容易从代码中提取秘密(因为它们很容易被反转,并且它们的使用标记了代码的哪些部分你隐瞒了什么。
如果这对您的商业计划很重要,那么就要预算,并期望它会引入一些具有挑战性的错误,并且预计它会被破坏(但可能需要更长时间)。
答案 1 :(得分:-2)
@Rob Napier,你把橘子和苹果比较是错误的。与阅读通过反编译中间代码生成的代码相比,阅读汇编代码或使用IDA进行反汇编是分开的。 Bitcode完全是一件令人讨厌的事情