如何理解LinuxARM及其应用保护

如何理解Linux ARM及其应用保护,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

曹县网站建设公司创新互联公司,曹县网站设计制作,有大型网站制作公司丰富经验。已为曹县千余家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的曹县做网站的公司定做!

Linux ARM 应用领域

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

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

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

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

如何理解Linux ARM及其应用保护

如何将应用迁移至 Linux ARM 上

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

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

如何理解Linux ARM及其应用保护

Linux ARM 应用保护

背景

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

如何理解Linux ARM及其应用保护方案

代码虚拟化

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

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

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

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

代码混淆

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

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

代码加密

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

如何理解Linux ARM及其应用保护

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

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

保护效果如下图:

如何理解Linux ARM及其应用保护

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


网页名称:如何理解LinuxARM及其应用保护
链接分享:http://ybzwz.com/article/jphgoh.html