Unicorn 模拟调用 SO 文件和 JNI 接口函数,包括 JNI_OnLoad

Unicorn 模拟调用 SO 文件和 JNI 接口函数,包括 JNI_OnLoad 在 Android 逆向工程中,很多时候我们需要在不依赖真机的情况下分析 SO 文件中的算法逻辑。Unicorn 作为一个轻量级的 CPU 模拟器框架,提供了底层的指令模拟能力。本篇将介绍如何使用 Unicorn 引擎加载 SO 文件、模拟 ARM 环境、调用 JNI_OnLoad 以及处理 JNI 接口...

发布于 Android 逆向

Unidbg 使用和加载 SO 文件的方法

Unidbg 使用和加载 SO 文件的方法 在 Android 逆向工程中,分析 Native 层的 SO 文件是一项核心任务。传统方式需要真机或模拟器配合 Frida 等工具进行 hook,但这种方式存在设备依赖、环境复杂、调试不便等问题。Unidbg 作为一个基于 Unicorn 的 Android Native 模拟执行框架,能够在纯 PC 环境中模拟执行 SO 文件中的函数,极大地...

发布于 Android 逆向

ART 下的壳通用脱壳技术

ART 虚拟机简介 从 Android 5.0(Lollipop)开始,Dalvik 虚拟机被 ART(Android Runtime)正式取代。ART 带来了根本性的架构变革,理解这些变革是掌握 ART 脱壳技术的前提。 AOT 编译 ART 最大的特点是引入了 AOT(Ahead-Of-Time)预编译。在应用安装时,系统会将 DEX 字节码编译为本地机器码(ELF 格式),存储在 ...

发布于 Android 逆向

ClassLoader 和动态加载

前言 ClassLoader(类加载器)是 Java 虚拟机和 Android 运行时中负责加载字节码文件的核心组件。在 Android 逆向工程中,理解 ClassLoader 的工作机制是掌握加壳与脱壳技术的必要前提——几乎所有第一代、第二代壳的核心原理都围绕 ClassLoader 展开。 本文将从 Java ClassLoader 基础出发,逐步深入到 Android 体系中的 C...

发布于 Android 逆向

C++程序逆向:类、构造析构函数、虚函数、虚表,继承、重载、覆盖、RTTI、异常

发布于 Android 逆向

C程序逆向:数据类型、运算符、分支与跳转、循环,函数、结构体、数组、位操作

发布于 Android 逆向

ART 中的 C++ 对象内存布局

发布于 Android 逆向

ART 中的函数 inline

发布于 Android 逆向

ART 定制方案比较和流程

发布于 Android 逆向

ART 定制跟踪 JNI 函数绑定

发布于 Android 逆向
191011121316