LLVM 简介、编译流程、CLion 调试
LLVM 项目概述 LLVM是于2002年创建的一个模块化和可重用的编译器和工具链技术的集合。它能够编译UNIX的内核,并用于漏洞挖掘。LLVM包括了多个核心组件,其中关键的包括: 核心库(LLVM Core) - 优化器 负责将源码优化到LLVM的中间语言(Intermediate Representation, IR)。 Clang LLVM的前端编译器,将C/C++代码编译...
LLVM 项目概述 LLVM是于2002年创建的一个模块化和可重用的编译器和工具链技术的集合。它能够编译UNIX的内核,并用于漏洞挖掘。LLVM包括了多个核心组件,其中关键的包括: 核心库(LLVM Core) - 优化器 负责将源码优化到LLVM的中间语言(Intermediate Representation, IR)。 Clang LLVM的前端编译器,将C/C++代码编译...
AndroidNativeEmu 调用 JNI 函数和模拟 Java 函数交互 AndroidNativeEmu 是一个基于 Unicorn 引擎的 Android Native 函数模拟执行框架,用 Python 编写。它提供了比原生 Unicorn 更高级的抽象,能够模拟 JNI 环境、加载 SO 文件、调用导出函数等。与 Unidbg(Java 实现)相比,AndroidNative...
Capstone、Unicorn、Keystone 工具的介绍 在逆向工程和二进制分析领域,有三个基于同一技术体系的工具经常被配合使用:Capstone(反汇编引擎)、Unicorn(CPU 模拟器)和 Keystone(汇编引擎)。它们三者都基于 QEMU 的相关技术,分别覆盖了二进制分析中"反汇编→模拟执行→汇编"的完整链路。本文将详细介绍这三个工具的定位、功能和使...
前言 Frida 是一款开源的跨平台动态插桩工具,它可以在应用程序运行时注入自定义的 JavaScript 脚本,实现对函数调用的 Hook、参数修改、返回值篡改等操作。与 Xposed 不同,Frida 无需重启设备、无需安装框架,即插即用,且同时支持 Android、iOS、Windows、macOS 和 Linux 等多个平台。 在 Android 逆向工程中,Frida 已经成为最...
为什么需要构造复杂参数 在 Android 逆向工程中,我们经常需要 Hook 某些关键函数来分析其行为,或者主动调用目标方法来获取结果。但很多 Java 方法的参数并不是简单的字符串或整数——它们可能是数组、自定义对象、Map、List 甚至枚举类型。如果我们想要在 Frida 脚本中正确调用这些方法,就必须学会如何在 JavaScript 环境中构造出符合 Java 类型系统要求的参数...
FART 框架概述 FART(First Android Unpack Tool,Android 第一款 ART 环境自动化脱壳机)是由安全研究员星痕(hanbinglengyue)开发的开源 Android 脱壳框架。FART 的出现填补了 Android 5.0(ART 运行时)环境下自动化脱壳工具的空白,在逆向工程社区中具有里程碑意义。 在 FART 之前,大多数脱壳工作依赖于手动操...
FART 脱壳后的 DEX 问题分析 FART 脱壳虽然能够自动 dump DEX 数据,但 dump 出来的结果并不总是完美的。根据目标应用使用的壳类型不同,脱壳后可能存在以下两类主要问题: DEX 文件不完整 某些壳程序(特别是新一代的加固方案)不会一次性将完整的 DEX 加载到内存中,而是按需加载——只有当某个类被实际使用时,才将其对应的 DEX 数据解密到内存。FART 在 Li...
FART 的局限性分析 FART 作为首款 ART 环境自动化脱壳工具,虽然开创了系统级自动脱壳的先河,但在实际使用中存在一些局限性: 需要刷机 FART 原版的核心实现需要修改 Android 系统源码(AOSP)并重新编译为自定义 ROM,然后刷入目标手机。这一要求带来了几个问题: 设备受限:不是所有 Android 手机都支持刷入自定义 ROM,特别是搭载高通 Bootloade...
FART 与 Frida 的互补关系 FART 和 Frida 是 Android 逆向工程中两个极其重要的工具,它们在脱壳领域具有天然的互补关系。理解它们各自的优势和局限,以及如何将它们结合起来使用,能够大幅提升脱壳的效率和成功率。 FART 的优势与局限 FART 的优势: 系统级权限:FART 通过修改 AOSP 源码实现,运行在系统层面,拥有最高权限,可以访问虚拟机的所有内部数...
FART 架构设计概述 FART(First ART Unpack Tool)是第一个基于 ART 虚拟机源码修改的自动化脱壳工具,由作者非虫开发并开源。它通过修改 AOSP 源码,在 Android 系统层面对 DEX 加载过程进行拦截,实现了对抽取壳的全自动脱壳。 FART 的整体架构设计围绕三个核心模块展开:主动调用机制、DEX Dump 机制和 DEX 修复机制。这三个模块协同工作...