我们正在在线分发iOS的软件模块。自那以后,Apple提倡使用位码,甚至要求某些设备(watchOS / tvOS)上的应用强制使用位码-迫使我们提供带有位码的软件模块(静态库)。
令人担忧的是,任何人对反向工程和反编译的安全性如何(例如Java字节码),以及如何加以保护?任何人都可以轻松地从网站上下载库并从中提取位码(IR)并进行反编译。这里有一些有价值的信息
https://lowlevelbits.org/bitcode-demystified/
苹果可能会剥离它,但应用程序可能并不关心位码,但对于静态库来说,它显然是一个关心的问题。
有什么见解吗?
最佳答案
正如链接所指出的那样:“malefactor可以获取您的应用或库,从中获取[代码]并窃取您的“秘密算法”。”完全正确。
另外,如果您运送非位代码库,则“恶意分子可以获得您的应用或库,从中检索[代码]并窃取您的“秘密算法”。”
另外,如果您运送非位代码应用程序,则“恶意分子可以获取您的应用程序或库,从中获取[代码]并窃取您的“秘密算法”。”
在任何情况下都不是不正确的。像Hopper一样便宜的工具(我选择的工具,但也有一些更便宜的解决方案),而像IDA这样的工具可以将您的函数反编译为可传递的C代码。
如果您正在使用Cocoa(ObjC或Swift),则使反向工程变得更加容易,因为动态自省Cocoa非常容易。
这不是一个可解决的问题。应用程序和库都可以尝试使用混淆技术,但是它们很复杂,脆弱,通常需要大量的花费或专业知识(并且常常两者兼有)。无论如何,随着人们对它的迷惑,您将需要不断改善自己的困惑。对于库来说,这毫无意义,因为一旦泄漏,您几乎无法重新保护,但是您可以尝试。
它会泄漏。那是无法解决的。比特码并没有改变太多。读取IR可能比ARM汇编要简单一些,但是要读的不是那么多,并且如果要保护的对象很小(例如,小的算法或密钥),则肯定不是。
有一些混淆供应商。产品建议对于Stack Overflow来说是不合适的(因为它们会吸引垃圾邮件),但是搜索“ios混淆”后,您会找到它们。在此空间中,由于它只是“棘手的隐藏”(不是安全性或加密),因此您通常会得到所要支付的费用。开源解决方案几乎没有意义,因为要点很棘手,并隐藏了您的操作方式。我已经使用了一些开源的混淆库,这些库使从代码中提取秘密变得更加容易(因为它们很难逆转,并且它们的使用标记了您隐藏事物的代码部分)。
如果这对您的业务计划很重要,请为此进行预算,并期望它会引入一些具有挑战性的错误,并且无论如何都希望将其打破(但可能需要更长时间)。
关于ios - iOS位码-安全问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47371558/