【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
文章目录
一、加壳技术识别
加壳技术识别的必要性 : 拿到 APK 文件后 , 如果想要分析其 DEX 文件 , 需要先 识别出该 APK 是使用的什么技术进行的加壳 , 如果该 APK 只是使用了整体保护 , 只需要将内存中的 DEX 文件 DUMP 下来即可 ; 如果该 APK 使用了 VMP 加壳 , 则需要逆向分析解释器 ;
只有识别出加壳的方式 , 才能有针对的进行脱壳 ;
上一篇博客 【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 ) 中介绍了几种常用的加壳技术 ;
每个加壳的应用必然使用 DEX 整体加固 , 然后在该基础上 , 使用 函数抽取 , VMP , Dex2C 中的一种加壳技术 , 也有可能使用
者中的多种加壳技术 , 进行混合加壳 ;
整体加固 就是对 DEX 文件进行 整体加密 , https://blog.csdn.net/shulianghan/category_10559800.html 专栏就实现了一个 DEX 整体加固的示例 ;
函数抽取特征 : 获取到加壳后的 DEX 文件 , 其函数体是无效的 ;
VMP / Dex2C 加壳特征 : 获取到 DEX 文件后 , Java 函数变为 Native 函数 ;
二、VMP 加壳示例
推荐一个 VMP 加壳程序 ADVMP ;
VMP 的核心原理是 自定义 Dalvik 和 ART 解释器 , 解释器解释 Smali 指令流 ; 该解释器是 VMP 加壳的核心原理 ;
解释器可以使用 Java 实现 , 也可以使用 C 实现 , 使用 Java 实现更容易被破解 ; 因此 , 解释器一般使用 C 实现 , 为了保护解释器不被快速定位 , 一般会使用 OLLVM 技术对解释器进行保护 , 增加逆向的难度 ;
三、Dex2C 加壳示例
推荐一个 Dex2C 加壳程序 dcc ;
Dex2C 加壳特征 : 获取到 DEX 文件后 , 其中被保护的函数 , 由 Java 函数变为了 Native 函数 ;
传统的编译原理 : 将代码进行词法 , 句法分析 , 生成二进制汇编代码 , 也就是机器码 ;
Dex2C 中, 将 Java 代码进行词法 , 句法分析 , 生成对应的 C / C++ 文件 , 然后交叉编译为 SO 动态库 ;
相关文章
- Android 动态分区配置原生示例
- android 浏览器 开发,Android 浏览器的开发实例分享
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android activity自动跳转,Android activity跳转之finish()方法的作用
- android 的hook技术,Android Native Hook技术(一)
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android 读取本地数据库db文件(Android sqlite)
- android 获取收到短信验证码,Android自动获取短信验证码
- android短信验证码方案,Android之短信验证码
- Android Jetpack 导航组件 | Android 中文教学视频
- 体态识别算法在 Android 端部署实例
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- Android resource linking failed_android:authorities
- Android 编译_android线程
- Android MVI框架搭建与使用
- Android Studio 快捷键详细介绍
- Android 渐变圆环,圆形进度条效果实现
- 一种基于Android、iOS系统的移动端身份证识别技术,手机拍照识别提取身份证信息
- 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
- 【Android 高性能音频】OboeTester 音频性能测试应用 ( Oboe 输出测试参数 | API 选择 | 音频输出设备选择 | 采样率 | 通道 | 采样格式 | 播放偏好 )
- 【错误记录】Android 应用打包错误 ( Entry name ‘assets/xxx.xml‘ collided )
- 【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
- 【Android 逆向】使用 Python 编写 APK 批处理分析工具
- 【Android 逆向】类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )
- 【Android Gradle 插件】ProductFlavor 配置 ( applicationId 配置 | SdkVersion 相关配置 | version 应用版本配置 )
- Android工具类DES加密时代的终结者——AES加密算法详解手机开发
- android EventBus 3.0使用指南详解手机开发
- Android——C语言、JNI与低层调用详解手机开发
- 乐播科技冯森:我为什么不看好Android电视游戏
- 基于Android中的AutoCompleteTextView实现自动填充
- Android中自定义Checkbox组件实例