带你快速了解LinuxARM及其应用保护

北京中科白癜风专治白癜风 http://m.39.net/pf/bdfyy/dbfzl/

背景

年6月22日,Apple宣布更换Mac电脑的CPU,从Intel公司的X86架构改成ARM架构,情理之外,意料之中。

所周知,电脑或者手机中,最重要的部分,就是CPU,不同的CPU采用不同的实现方式,支持不同的指令集,彼此之间还不通用。运行在特定CPU架构下的软件,如果想移植到新的架构上使用,必须重新编译,遥想当年SurfaceRT上线之时,由于更换了CPU架构,只能使用WindowsStore提供的软件,绝大多数常用软件都没有进行适配工作,最终黯然立场。

目前,主流的CPU架构有两种,X86和ARM,分别代表着CISC「复杂指令级」和RISC「简单指令级」。

lX86架构:单核性能强大,但电压高、功耗高、价格昂贵,主要用于桌面电脑和服务器;

lARM架构:单核性能略逊色于X86架构,但功耗低,目前主要应用于移动设备;

近几年,X86架构发展迟缓,ARM架构则进步显著,有些ARM芯片单核性能已不输X86,ARM架构从移动设备向桌面电脑和服务器进军。

得益于硬件进步和开源社区的贡献,在使用ARM架构运行桌面应用的过程中,Linux无疑比Microsoft和Apple激进的多,越来越多的Linux从X86架构切换到ARM架构上,甚至在某些场景和行业下,LinuxARM已经形成了主流。

LinuxARM应用领域

LinuxARM在IoT和AI领域有着广泛的应用,大量使用在工业控制、智慧生活、城市管理等场景下,为人们的工作和生活发挥着重大作用。

l工业控制:智能AI、机器视觉、智能装备、无人驾驶等;

l智慧生活:智能家居、数字医疗、定位导航等;

l城市管理:智能交通、环境监测、智能安防、智能建筑、智慧物流等

如何将应用迁移至LinuxARM上

越来越多的应用切换到ARM架构是一个趋势。但目前绝大部分应用还都运行在X86架构的CPU上,开发者需要将应进行某种形式的「重构」才能运行在ARM架构的设备上。主要原因是X86与ARM采用了不同类型的指令级,需要完美的处理指令级上的差异,应用才能正常运行。

不同类型的开发语言,在迁移过程中的难度和工作量是不同的。最简单的是解释型语言,例如Python等,如果不依赖C、C++等编译型语言的公共组建,可以直接运行在ARM架构下。对于C、C++、Go等编译型语言编写的应用程序,需要采用ARM64「aarch64」编译器重新编译后才能运行。因为编译型语言先要被「翻译」成汇编,然后再转换成二进制指令。对于极少数的汇编语言,则需要使用ARM指令级改写一遍了。

LinuxARM应用保护

背景

目前,大量的LinuxARM应用是由LinuxX86迁移而来,由于指令集的变化,应用做了相应的适配,原有的保护方案随着指令集变化也失去了作用,开发者需要重新调整安全方案。

方案

代码虚拟化

程序的执行依赖CPU对符合指令集规范的代码进行解析处理。如果指令集不符合CPU的规定,就无法识别。

代码虚拟化,是将原指令,通过自定义的方式进行的变形处理,生成一种新的指令集,这种指令集,需要通过能够解析该指令的特殊的解释器才能够运行,这种通过特殊的解释器运行变形的虚拟指令的过程,就是代码虚拟化。

传统的加壳产品,在对抗静态分析会有不错的效果,但运行后会在内存里暴露原有的代码,黑客Dump内存后,进行必要的修复,即可使用IDA进行阅读分析,但使用代码虚拟化以后,程序运行时不会将虚拟指令集还原,即便被Dump,IDA也无法阅读被虚拟化后的代码,黑客只能尝试分析复杂度更高的虚拟机,极大的提升了代码分析的难度和需要的时间。

由于ARM指令集与X86相差较大,原有的LinuxX86的虚拟化方案,并不能应用在LinuxARM平台上,所以,开发者需要能够支持LinuxARM的代码虚拟化方案。

代码混淆

代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式。混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义,通过进行代码混淆可以有效提升应用被逆向破解的难度。

代码混淆对于扰乱原始指令、防止静态分析和反编译具有极大的帮助。

代码加密

代码加密是使用SMC(Self-ModifyingCode)技术,将原始的函数加密,在函数被执行时才将函数解密并执行的保护方式。代码加密尤其适合LinuxARM平台,因为其运行效率高,几乎没有性能损失。

VirboxProtector作为深思数盾安全实验室在代码保护方向上的主打产品,成功将代码虚拟化从X86平台移植到ARM平台,并结合ARM指令集特点进行了专门优化,结合代码混淆、智能压缩等主流功能,对于防止动态分析和静态分析有着极强的防御能力。

VirboxProtector基于二进制文件操作,开发者无需提供源代码,无需调用API。

保护效果如下图:




转载请注明:http://www.aierlanlan.com/rzgz/3124.html