VMP android
Android DEX-VMP 虚拟保护技术 | GeneBlue’s Blog
这块都是商业机密吧,能找的资料很少。然后各大加固厂商又都在吹自己实现了VMP怎么怎么地。。。
VMP(虚拟软件保护技术)大概思路就是自定义一套虚拟机指令和对应的解释器,并将标准的指令转换成自己的指令,然后由解释器将自己的指令给对应的解释器。由于兼容性和效率等问题,所以VMP一般只用于关键函数。
回答一下我看到的:
1.简单一点的是用O-LLVM混淆native代码,膨胀so并插入花指令
2.爱加密所说的第四代vmp是先提取dex中的虚拟指令集,将dex中提取指令的方法清空,并将方法修改为native方法;然后通过爱加密自定义指令替换规则,替换提取的指令并保存到其他文件中。
3.通付盾是实现了自定义指令集和自定义虚拟机运行环境的动态代码保护方案
其实大多的都是直接把smali翻译成c实现
诸国南方有乔木好电影网雾蒙蒙_南方有乔木全集免费观看作品动态图图片惭运库
http://zke1ev3n.me/2016/01/18/基于LLVM的代码混淆/
通付盾安全虚拟机PayegisVM3.0
而经过虚拟机保护后
我们可以看出,符合x86或arm体系架构的标准汇编指令(mov、add、pop等),已变成了自定义加密汇编指令(xchg、db、dq等)。
Android DEX-VMP 虚拟保护技术 | GeneBlue’s Blog
VMP dex
[原创]dex vmp虚拟化-『Android安全』-看雪安全论坛
https://bbs.pediy.com/thread-248712.htm
第五代加固技术 ARM代码虚拟化保护技术
https://paper.seebug.org/papers/Security%20Conf/KCon/2017/%5BKCon%202017%5D0827_3_陈愉鑫_第五代加固技术ARM%20VMP原理实现与应用.pdf
- 加密原理
- 图解
- – 如何设计一个虚拟机?
- – 用什么语言来开发虚拟机?
- – 如何对编译后的ELF文件中指定函数进行虚拟化? – 如何设计一个编译器?
- 几大模块:
- VM 虚拟机核心
- VM 编译器
- VM 链接器
- VM 各种stub
- 编译器工作流程:
- 1.反汇编ARM
- 2.生成中间代码
- 3.处理定位
- 4.生成opcode
- 如何反汇编arm?
- Capstone 跨平台开源反汇编引擎
- Capstone 支持:
- Arm, Arm64 (Armv8), M68K, Mips, PowerPC, Sparc, SystemZ, TMS320C64X, XCore& X86 (incl ude X86_64)
- 提供了多种语言的编程接口:
- Clojure, F#, Common Lisp, Visual Basic, PHP, PowerShell, Haskell, Perl, Python, Ruby, C#, NodeJS, Java, GO, C++, OCaml, Lua, Rust, Delphi, Free Pascal
- Capstone的强大之处
- 反汇编 + 分析
- 编译成中间文本形式代码,便于调试
- 主页
- 安装
- brew install capstone
- sudo apt-get install libcapstone3
【总结】
- VMP=代码虚拟化
- 代码加固领域的技术
- 起源:
- 俄罗斯的著名软件保护软件 VmProtect=虚拟机保护
- 以此为开端引起了软件保护壳领域的革命,各大软件保护壳都将虚拟机保护这一新颖的技术加入到自己的产品中
- 是什么:代码虚拟化是将程序代码编译为虚拟机指令即虚拟代码(自己定义的代码集),通过虚拟CPU解释并执行的一种方式
- 为什么(要指令虚拟化)?
- 软件保护壳的发展阶段
- 第一阶段:
- 当壳完成解密目标代码时,它将不会再次控制程序,被保护程序的明文将在内存中展开。在此之前,壳可以调用一切系统手段来防治黑客的调试与逆向。
- 第二阶段:
- 可以实现分段式的加解密,壳运行完毕后,并不会消失而仍然会在程序运行到某个点时再次启动。
- 第三阶段:
- 其实最简单的解释是,将被保护的指令使用一套自定义的字节码(逻辑上等价)来替换掉程序中原有的指令,而字节码在执行的时候又由程序中的解释器来解释执行,自定义的字节码只有自己的解释器才能识别,也是因为这一点,基于虚拟机的保护相对其他保护而言要更加难分析。
- 大致流程:
- 原理
- 加固端
- 解释器
转载请注明:在路上 » 【整理】安卓安全技术:VMP android