基础以及细节遗留问题

关键技术基础概念 FRIDA Frida是一个动态代码插桩工具,主要用于执行动态分析。它允许你在程序运行时注入自己的代码或监控执行流程。使用该工具可以实现对应用程序的Hook,监控和修改函数调用和消息传递。 适用平台:支持Windows、macOS、Linux、iOS和Android等多个平台。 使用场景:逆向工程、安全评估、开发与调试等。 核心组件:包括一个核心库以及多个语言绑定(如...

发布于 Android 逆向

Dalvik 下的壳通用脱壳技术

Dalvik 虚拟机简介 在深入脱壳技术之前,我们需要先理解 Dalvik 虚拟机的基本架构,因为所有 Dalvik 时代的脱壳方案都建立在这些底层机制之上。 DEX 文件格式 DEX(Dalvik Executable)是 Android 应用程序的可执行文件格式。一个 APK 包中通常包含一个 classes.dex 文件,它是所有 Java/Kotlin 代码经过编译后的产物。DE...

发布于 Android 逆向

FART 中的脱壳点选择和分析

前言 在前面的文章中,我们已经了解了 FART 的整体使用场景和脱壳流程。然而,FART 之所以能够高效地完成脱壳,核心在于它选择了恰到好处的"脱壳点"——即 DEX 文件在内存中被解密完成、但尚未被系统做进一步处理的那个瞬间。 本文将深入分析 FART 在 Dalvik 和 ART 两个运行时下分别选择了哪些脱壳点,这些脱壳点各自的优缺点是什么,以及在实际对抗不同壳时...

发布于 Android 逆向

FART 使用场景和流程分析

FART 简介 FART(First Android Unpack Tool)是由安全研究员归零(GitHub ID:hanbinglengyue/FART)开源的一款基于 ART 虚拟机的自动化脱壳工具。与传统的内存 dump 方案不同,FART 选择在 ART 的类加载流程中主动介入,通过系统级 hook 实现对加密 DEX 的完整还原。 项目开源地址:https://github.c...

发布于 Android 逆向

不同代的壳和加壳技术

前言 在 Android 逆向工程中,“加壳"是最常见的应用保护手段。所谓"壳”,就是在原始 APK 外层包裹一层加密或混淆逻辑,使得攻击者无法直接通过 jadx、apktool 等工具反编译出真实的业务代码。随着攻防对抗的升级,加壳技术经历了从简单到复杂、从用户态到内核态的多次迭代。 本文将系统梳理五代壳的核心原理、代表产品及对应的脱壳思路,帮助你建立对加壳技术的全局...

发布于 Android 逆向

加壳 APP 运行流程和原理

前言 在 Android 逆向工程中,「加壳」是一种常见的 APP 保护手段。加壳的核心思想是:将原始的 DEX 文件加密后藏起来,用一段壳程序替代它运行,在运行时再将真实 DEX 解密并加载到内存中。理解加壳 APP 的运行流程,是后续学习脱壳技术的基础前提。 本文将从 APK 文件结构出发,对比正常 APP 与加壳 APP 的启动差异,逐步拆解壳程序的运行机制。 APK 文件结构回顾...

发布于 Android 逆向

在 ART 下抽取壳的实现

什么是抽取壳 在 Android 安全领域,抽取壳(Extraction Packer) 是一种常见且经典的加固方案。它的核心思想非常直观——把 DEX 文件中每个方法的字节码(机器指令)“抽走”,只留一个空壳。当应用运行时,壳程序再将这些字节码动态地填回原位,使程序能够正常执行。 具体来说,抽取壳会: 解析 classes.dex,找到每个方法对应的 code_item 结构体 提取 ...

发布于 Android 逆向

逆向分析和脱壳的意义

前言 Android 系统的开放性使其成为全球使用最广泛的移动操作系统,同时也成为安全研究的重要战场。随着移动应用安全防护技术的不断升级,加壳(加固)技术已经成为行业标配。对于安全从业者而言,理解逆向分析和脱壳的意义,是深入 Android 安全领域的必经之路。 本文将从实际应用场景出发,系统讲解逆向分析的价值、加壳技术的现状、脱壳的核心意义,以及如何将脱壳融入到完整的逆向流程中。 为什...

发布于 Android 逆向

2026-05-08

发布于 

OLLVM 指令替换与分割基本块

前言 在之前的文章中我们介绍了 OLLVM 控制流平坦化的原理与实现。除了控制流平坦化之外,OLLVM 还提供了两个同样重要的混淆 Pass:指令替换(Instruction Substitution,-sub)和分割基本块(Block Splitting,-spl)。这两个 Pass 的核心目标各不相同——前者让每条指令变得"面目全非",后者让代码结构变得"...

发布于 Android 逆向
167891016