Android dex的加载流程以及加固脱壳时机点简单总结
来源:互联网 发布:ubuntu英文改中文 编辑:程序博客网 时间:2024/05/22 17:36
1.Dex文件优化与验证:
把dex文件转化为odex的过程,填补一些加载依赖的类。这里存在一代脱壳时机点,比如早期的爱加密在dvmdexfileopen函数下断点。
2.Dex文件解析:
将优化后得dex文件(也就是odex文件)通过mmap映射到内存中,并通过mprotect修改它的映射内存为只读权限,映射为只读的这块dex数据中的内容全部提取到DexFile这个数据结构中去,然后开始解析dex文件。
这里存在二代脱壳的时机点:在dvmDexFileOpenFromFd下断点,比如百度加固,参考链接:http://bbs.pediy.com/thread-218891.htm
或者在dexFileParse下断点。
3.Dex的类加载过程:
主要是完成整个类的加载过程,返回一个ClassObject结构体。
这里存在着第三代的脱壳时机点:比如在dvmDefineClass()类加载的时候,进行主动的类加载并完成重构然后进行dump,可以通过HOOK这个关键函数或者patch系统源码来完成。
4.实际指令执行:
主要寻找对应的类方法进行实际的指令运行解释。
这里要进行第四代加固的话也就是目前比较热的VMP,抽取指令,变形,映射然后进行自解释。
总结:
其实可以看到加固和脱壳是相对应的,加固从修改早期的上层系统函数到目前比较火热的代码抽取自解释,也可以说是从整体加解密到部分加解密到虚拟解释的过程,都是从上层到底层的一个过程,越往底层加固的效果会好一些,但是随之带来的兼容性问题可能就比较大。
把dex文件转化为odex的过程,填补一些加载依赖的类。这里存在一代脱壳时机点,比如早期的爱加密在dvmdexfileopen函数下断点。
2.Dex文件解析:
将优化后得dex文件(也就是odex文件)通过mmap映射到内存中,并通过mprotect修改它的映射内存为只读权限,映射为只读的这块dex数据中的内容全部提取到DexFile这个数据结构中去,然后开始解析dex文件。
这里存在二代脱壳的时机点:在dvmDexFileOpenFromFd下断点,比如百度加固,参考链接:http://bbs.pediy.com/thread-218891.htm
或者在dexFileParse下断点。
3.Dex的类加载过程:
主要是完成整个类的加载过程,返回一个ClassObject结构体。
这里存在着第三代的脱壳时机点:比如在dvmDefineClass()类加载的时候,进行主动的类加载并完成重构然后进行dump,可以通过HOOK这个关键函数或者patch系统源码来完成。
4.实际指令执行:
主要寻找对应的类方法进行实际的指令运行解释。
这里要进行第四代加固的话也就是目前比较热的VMP,抽取指令,变形,映射然后进行自解释。
总结:
其实可以看到加固和脱壳是相对应的,加固从修改早期的上层系统函数到目前比较火热的代码抽取自解释,也可以说是从整体加解密到部分加解密到虚拟解释的过程,都是从上层到底层的一个过程,越往底层加固的效果会好一些,但是随之带来的兼容性问题可能就比较大。
阅读全文
0 0
- Android dex的加载流程以及加固脱壳时机点简单总结
- 阿里第一代 android dex加固的脱壳方法
- Android so加固的简单脱壳
- 360加固保的dex脱壳方法
- 360加固保的dex脱壳方法
- Android安全–一次简单的脱壳Dump dex实践
- Android安全–一次简单的脱壳Dump dex实践
- Android安全–一次简单的脱壳Dump dex实践
- Android加固与脱壳学习之加固初步总结(1)
- android APK加固篇-2.动态加载dex及dex的方法的调用
- Android加固与脱壳学习之linux基础和抽取dex
- android APK加固篇-1. 动态加载的Dex文件的生成
- Dex加固总结之腾讯加固
- Android常见App加固厂商脱壳方法的整理
- Android常见App加固厂商脱壳方法的整理
- Android常见App加固厂商脱壳方法的整理
- Android中dex文件的加载与优化流程
- 鬼哥的一次简单脱壳实例(dex)
- Spring AOP详解(示例)
- JavaNIO的系列教程
- 收视率一直是门玄学,但有人把它变成了科学
- mysql经典查询练习
- Python学习随笔一:数据类型和字符编码
- Android dex的加载流程以及加固脱壳时机点简单总结
- jQuery中$()与$(document).ready()的区别
- [HDU](1285)确定比赛名次 ---拓扑排序+STL优先级队列(图)
- Codeforces 392C Yet Another Number Sequence
- vuforia模型脱卡功能的实现
- Redis设实
- vue学习02----目录结构
- Linux(centos5.5)中shutdown命令出错:bash: shutdown: command not found
- spring MVC