首页> 技术观点 > 汇编加固,助iOS应用抵抗高级逆向技术的金钟罩

汇编加固,助iOS应用抵抗高级逆向技术的金钟罩

发布时间:2024-06-20
对iOS应用进行加固可以防止应用被破解和盗版行为,保护应用的知识产权和商业利益;防止应用被反编译和逆向工程,降低应用代码和数据的泄露风险,确保应用的安全性;增加应用的抗攻击能力,防止恶意行为对应用的损害,提升应用在面对各种安全威胁时的防御能力。
目前iOS加固主要分为3大技术路线:1、汇编指令混淆加固;2、Xcode插件混淆加固;3、源到源混淆加固。本次就汇编指令混淆加固与源到源混淆加固两种加固方案进行解读。

1

什么是ARM64汇编指令混淆
ARM64,也称为AArch64,是ARM架构的一个64位版本,旨在为高性能计算设备提供支持,包括现代的iOS设备,如iPhone和iPad。ARM64汇编语言,作为苹果iOS设备的核心指令集,其复杂性与灵活性为应用安全加固提供了天然优势。汇编指令混淆,通过随机化、加密或变换原有指令序列,使得逆向工程者难以理解和还原原始程序逻辑,有效提升了软件的安全防护水平。加固后的应用程序,其内部逻辑被深度隐藏,大大增加了破解成本,成为抵御恶意分析与篡改的关键技术手段,在保护知识产权与用户数据安全方面发挥着重要作用。

2

ARM64汇编指令加固的优势
更深层次的混淆:在汇编指令级别混淆代码意味着混淆发生在编译后阶段,这避免了编译器优化的影响。此外,汇编指令混淆可以采用更底层的技术,如指令替换、控制流扁平化、数据加密存储等,这些技术能够从根本上改变程序的行为模式,使得即使了解高级语言的结构也无法轻易恢复程序的真实逻辑。
汇编指令作为通用“语言”:汇编语言是直接对应计算机硬件指令集的语言,它位于机器码和高级语言之间,是所有编程语言最终转化为的形式。这意味着,无论是使用C、C++、OC、Swift、GoLang还是Flutter开发的应用,最终都将被编译或解释成一系列的汇编指令供CPU执行。这一特性赋予了基于汇编指令的混淆技术以极高的跨语言兼容性。
VMP虚拟化:ARM64汇编指令混淆技术,结合VMP虚拟化,能够在更底层的硬件指令集上实现动态代码执行。不仅增强了代码的隐蔽性,而且由于VMP机制的存在,使得逆向工程者难以通过常规手段捕捉到代码的真实意图和执行路径。此外,VMP还可以集成多种防御策略,如多态性、加密和自我修改代码,以应对不断进化的攻击技术。
使用方便:直接对编译后IPA包进行加固处理,加固完成后输出加固后的IPA包。

3

源到源 vs ARM64汇编指令
源到源混淆(Source-to-Source Obfuscation)是一种代码保护技术,它在源代码级别上对原始代码进行修改,以使其难以理解。这种混淆通常包括字符串加密、控制流扁平化、插入假代码等技术,目的是让逆向工程者难以追踪代码的真实意图。
但源到源混淆目前存在3大缺陷:
1、它仅作用于源代码级别的符号,当代码被编译为二进制时,许多混淆效果可能会被编译器优化所消除。例如,编译器可能识别出死代码并将其移除,或者简化过于复杂的控制流结构,这降低了混淆的有效性。
2、它无法完全符号化原始代码,这进一步影响了其保护效果和调试便利性。源到源混淆在编译前进行,这意味着编译器生成的调试信息是基于混淆后的代码,而不是原始代码。这也给开发者带来了不便,因为在出现错误时,他们可能需要花费更多的时间和精力来理解混淆代码的运行逻辑,以定位和修复问题。
3、源到源混淆通常不包含VMP(Virtual Machine Protection)虚拟化技术,后者能够在运行时创建一个虚拟执行环境,动态地执行和变形代码。没有VMP,源到源混淆的代码在静态分析面前可能较为脆弱,因为静态分析工具可以尝试恢复混淆前的代码结构。
虽然源到源混淆在某些场景下仍有一定作用,但在对抗高级逆向工程技术和寻求更高层次代码保护的情况下,ARM64汇编指令混淆结合VMP技术则展现了更强大的保护能力。
为协助各位了解iOS各技术路线效果及影响,爱加密特制作了对比图,仅供各位参考。

 

爱加密移动应用安全加固平台为开发者提供全面的移动应用安全加固技术,不仅可进行iOS加固,更包括Android应用加固、游戏应用加固、H5文件加固、微信小程序加固、SDK加固等,从根本上解决移动应用的安全缺陷和风险,使加固后的移动应用具备防逆向分析、防二次打包、防动态调试、防进程注入、防数据篡改等安全保护能力。

 

END

欢迎给我们留言或评论~

我们将持续发布技术解读、解决方案、行业报告

点击关注,不错过下次精彩内容

 

 

加入收藏