ARM Linux ELF加壳方案
随着移动应用和IoT设备的普及,大量的硬件抛弃了传统的x86架构,选择使用能耗低、性价比高的ARM芯片,ARM指令级渐渐成为主流,但随之而来的,是愈发严峻的安全问题。
早期的加壳产品主要利用压缩加密技术对文件进行整体性保护,但随着逆向技术的提升,整体性的文件保护方案已经被攻克,于是加壳产品引入虚拟机概念,可以实现函数级的代码控制流保护,加密的颗粒度更加细致,激活成功教程难度呈几何级增加。
压缩加密
技术原理类似桌面应用的「压缩壳」,将 SO 文件中的代码段压缩或加密,在入口函数中解密再执行。
这种保护方式可以防止直接使用反编译工具打开反编译,但在运行过程依旧可以直接被 Dump 出来再反编译。后来又出现了「自定义 Linker」等方式的保护方式,这样可以隐藏一些文件格式信息,但依旧解决不了函数被Dump后的反编译问题。
由此可见,文件级的整体保护方案无法应对高等级的安全挑战,加固技术需要进一步升级,针对指令进行保护。
基于LLVM的代码保护方案
由于在Android下实现原生的函数级代码控制流保护技术难度太大,所以大部分的产品,都采用了弯道超车的方案,基于开源的OLLVM「由瑞士西北应用科技大学安全实验室在2010年发起的一个项目」进行改造,以实现函数级的代码混淆,在相当长的一段时间内,基于LLVM的代码保护技术,成为函数级保护的主流方案。
虽然基于LLVM的代码保护方案可以在一定程度上起到防止反编译的效果,但依旧存在很多问题,需要由新的解决方案替代。
虽然使用OLLVM进行保护后,可以在一定程度上起到防止反编译的作用,但依旧存在很多问题。
可以被反编译
由于 OLLVM 是在编译过程中对 LLVM IR 进行了处理,IR 属于架构无关指令,在 LLVM 后端依然要生成平台相关的指令,所以最终只是变成了「更加复杂的 C/C++ 代码」而已。
边界清晰
通过「基本块」拆分,虽然函数中的逻辑块变得很分散,但它们依旧排列在一起,函数有明确的起始和结尾。
函数间引用关系可见
混淆对象受限于 IR 指令,无法精细的对 Native 指令进行操作,使得保护后的代码仍然可以被反编译工具用 「交叉引用」 搜索到,对函数间调用关系的保护效果差。
ARM-虚拟化保护技术
ARM-VM 技术借鉴了桌面应用中对 x86 指令的虚拟化保护思路,将其完整地适配到了 ARM 平台,该技术的实现完全独立,直接对编译生成的二进制文件进行保护。
基于ARM-VM 技术的保护过程无需配置编译器,由单独的工具完成。典型的工具如:Virbox Protector。
ARM-虚拟化保护方案优势
通过指令切片,间接跳转等处理,生成的指令块无法被 IDA 分析,只能查看汇编指令。
通过链接器乱序再重定位,生成的指令块在可执行文件中的位置是随机的,函数保护后变成了无数个随机位置的指令碎片,无法知道函数的边界。
直接对 ARM 指令保护,可以更精细的控制指令和寄存器,灵活性高,能够达到更高的安全性上限。
直接处理 ARM 指令,不受限于开发语言和语法标准,几乎可以保护任何编译为 ARM 架构的程序,如 golang 等。
支持工具推荐
支持ARM 虚拟化保护方案的工具:Virbox Protector
Windows、Linux、macOS。
C、C++、Objective-C、Swift、go、汇编语言等。
X86、x64、ARM32、ARM64
申请试用
https://shell.virbox.com/apply.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183300.html原文链接:https://javaforall.cn
相关文章
- 服务器使用FTP工具远程连接Linux服务器(ftp工具连接linux)
- 方案Linux默认分区方案:最佳实践(linux默认的分区)
- Linux下修改用户名的简易指南(linux中修改用户名)
- Linux命令行查看文件行号的方法(linux怎么显示行号)
- Linux系统查看硬件信息的有效方案(linux查看硬件信息)
- Linux系统的备份方案解析(linux的备份方案)
- 系统Linux快速启动操作系统的完美方案(linux启动操作)
- 掌握Linux服务器虚拟机技术,实现服务器解放!(linux服务器虚拟机)
- 移植从ARM裸机到Linux移植:把握一个不同的空间(arm裸机linux)
- Linux下配置Java开发环境的指南(linux配置java环境)
- 标题:禁用Linux防火墙保护(关闭linux的防火墙)
- 及特性Linux分支及其独特特性介绍(linux的分支)
- Linux系统分支:深度探索(linux的分支)
- 支持Linux系统的电脑降价促销!(支持linux的电脑)
- 「Linux链路负载均衡」:提升网络性能的必备方案(linux链路负载均衡)
- Linux 调度算法简介及优化方案探讨(linux调度算法)
- Linux下快速创建虚拟网卡的方法(linux创建虚拟网卡)
- Linux快速部署:简单易行的快速方案(linux快速部署)
- 腾讯在Linux系统中的应用及其发展前景(linux腾讯)
- ARMLinuxLD:加速Linux系统开发的利器(arm-linux-ld)
- Linux服务器如何优化最大连接数?(linux最大连接数)
- 解决Linux进程自动关闭问题:排查及应对方案(linux进程自动关闭)
- Linux硬盘快速信息读取技术研究(linux硬盘读取)
- Linux文件复制与重命名指南(linux文件复制重命名)
- Linux系统下建立内存镜像,解决崩溃问题(linux内存镜像)
- Linux远程桌面设置方案实施(linux设置远程桌面)