ADVMP 源码分析与上手

ADVMP 项目介绍 ADVMP(Android Virtual Machine Protection)是一个开源的 Android VMP 实现项目,旨在帮助安全研究人员学习和理解 VMP 的内部原理。与商业 VMP 产品不同,ADVMP 的源码完全公开,代码结构清晰,注释详尽,是学习 VMP 逆向分析的绝佳教材。 为什么要学习 ADVMP VMP 是 Android 逆向领域中最具挑...

发布于 Android 逆向

Hyperpwn 的安装和使用

Hyperpwn 简介 Hyperpwn 是一款专为 VMP(Virtual Machine Protection)逆向分析设计的 IDA Pro 插件。它提供了一套完整的工具链,用于追踪 VM 的执行流、提取 VM Handler、分析字节码调度逻辑,最终帮助逆向工程师构建 Handler 映射表并还原被保护函数的逻辑。 与手动分析 VM 解释器相比,Hyperpwn 能够大幅提升效率。...

发布于 Android 逆向

OLLVM_RC4 算法的还原案例

背景:OLLVM 混淆下的 RC4 算法还原 在实际的 Android 逆向工程中,我们经常遇到被 OLLVM(Obfuscator-LLVM)混淆的 Native 函数。OLLVM 不会改变算法的语义,但会极大地扭曲代码的控制流,使得静态分析变得极其困难。本文以 RC4 算法为例,讲解如何在 OLLVM 混淆下还原算法逻辑。 RC4 是一种广泛使用的流加密算法,结构简洁(仅 KSA + ...

发布于 Android 逆向

VMP 保护函数的快速逆向分析方法(理论与实践)

VMP 逆向分析的挑战 在上一篇文章中,我们了解了 VMP(Virtual Machine Protection)的基本原理。VMP 将原始的机器指令转换为自定义虚拟机的字节码,由 VM 解释器执行。这意味着被 VMP 保护的函数,在内存中永远不会以原始形式出现,传统的静态分析和内存 Dump 都无法直接获取原始逻辑。 面对 VMP 保护的代码,逆向工程师需要完成两个层面的分析: VM ...

发布于 Android 逆向

使用 Hyperpwn 调试 VMP 并构建映射表

前置准备 在上一篇文章中,我们完成了 Hyperpwn 的安装和基本配置。本文将通过一个实际案例,演示如何使用 Hyperpwn 调试 VMP 保护下的函数,并构建完整的 Handler 映射表。 环境准备 IDA Pro 7.5+(已安装 Hyperpwn 插件) 目标 SO 文件:包含 VMP 保护的 Native 函数 Android 模拟器或真机(用于动态调试) 已知的被保护函...

发布于 Android 逆向

安卓 APP 加壳技术分类与 VMP 初识

Android 加壳技术概述 在 Android 逆向分析的领域中,"加壳"是最常见的保护手段之一。所谓加壳,本质上是对原始 DEX 文件或 SO 文件进行加密、压缩或混淆处理,然后在运行时由一个解壳程序(壳)负责将原始代码还原到内存中执行。加壳的目的是提高逆向分析的门槛,保护开发者的知识产权和核心业务逻辑。 随着逆向技术的不断进步,加壳技术也在持续演进。从最初简单的 ...

发布于 Android 逆向

定制 ART 以绕过反调试

为什么要定制 ART 在 Android 逆向工程中,反调试(Anti-Debugging)是 APP 最常见的自我保护手段之一。APP 通过各种方式检测自己是否正在被调试,如果检测到调试器的存在,就会采取保护措施(如退出进程、返回错误数据、触发反作弊等)。 常见的反调试手段包括: 检查 TracerPid 字段 检测 ptrace 系统调用 时间差检测 检测调试端口 检测 Frida ...

发布于 Android 逆向