Frida Hook Java 的高级用法

Hook 构造函数 构造函数在 Java 中用 <init> 表示,是对象创建时的入口。通过 Hook 构造函数,我们可以在对象初始化之前或之后拦截和修改数据。 基本构造函数 Hook Java.perform(function () { var User = Java.use("com.example.app.model.User");...

发布于 Android 逆向

Frida 辅助分析 OLLVM 字符串加密和控制流平坦化

OLLVM 字符串加密原理 在 Android 逆向分析中,字符串是最重要的信息载体之一。APP 中的 API 地址、密钥、URL、调试信息等通常以明文字符串的形式存在于 SO 文件中。OLLVM 的字符串加密 pass(String Encryption)通过在编译时将字符串加密为密文,在运行时通过解密函数还原,有效防止了静态分析。 编译时加密 OLLVM 的字符串加密在 LLVM I...

发布于 Android 逆向

Frida 辅助分析 OLLVM 指令替换和虚假控制流程

OLLVM 指令替换概述 OLLVM(Obfuscator-LLVM)是目前 Android Native 代码混淆中最流行的工具之一。其中"指令替换"(Instruction Substitution)是其核心混淆手段之一,它将简单的算术和逻辑运算替换为数学上等价但更复杂的表达式,极大地增加了逆向分析的难度。 指令替换的基本原理 指令替换的核心思想是:利用数学等价关...

发布于 Android 逆向

Ida Trace 分析 非标准算法 和 OLLVM混淆的非标准算法

IDA Trace 功能介绍 IDA Pro 的 Trace 功能是分析复杂算法和混淆代码的强大工具。与简单的断点调试不同,Trace 能够记录一段时间内指令的完整执行序列,包括每条指令的地址、寄存器值、内存读写等信息,为分析提供全局视角。 Trace 的类型 IDA Pro 提供多种 Trace 模式: Trace 类型 记录内容 适用场景 指令 Trace 每条执行过的...

发布于 Android 逆向

使用 Frida Stalker 追踪算法实现

Frida Stalker 工作原理 Frida Stalker 是 Frida 框架中最强大的代码追踪工具,它能够在运行时对任意线程的代码执行进行实时的、指令级别的追踪。与 Interceptor 只能在函数入口和出口设置钩子不同,Stalker 可以追踪目标线程执行的每一条指令,记录完整的执行路径。 核心机制 Stalker 的工作原理可以概括为以下几个步骤: 1. 线程劫持 ...

发布于 Android 逆向

结合 Frida 和 IDA Trace 分析算法

Frida 和 IDA 的各自优势与局限 在 Android Native 代码逆向分析中,Frida 和 IDA Pro 是两个最核心的工具。它们各自有不同的优势和局限,理解这些差异是制定高效分析策略的基础。 Frida 的优势与局限 优势: 实时动态分析,不需要修改 APK 文件 脚本热加载,即改即用,调试效率高 可以在任何时刻注入和 Hook,不受编译限制 Stalker 提供指...

发布于 Android 逆向

Frida 开发和调试环境搭建

前言 Frida 是一款开源的跨平台动态插桩工具,它可以在应用程序运行时注入自定义的 JavaScript 脚本,实现对函数调用的 Hook、参数修改、返回值篡改等操作。与 Xposed 不同,Frida 无需重启设备、无需安装框架,即插即用,且同时支持 Android、iOS、Windows、macOS 和 Linux 等多个平台。 在 Android 逆向工程中,Frida 已经成为最...

发布于 Android 逆向

Frida 构造数组、对象、Map 和类参数

为什么需要构造复杂参数 在 Android 逆向工程中,我们经常需要 Hook 某些关键函数来分析其行为,或者主动调用目标方法来获取结果。但很多 Java 方法的参数并不是简单的字符串或整数——它们可能是数组、自定义对象、Map、List 甚至枚举类型。如果我们想要在 Frida 脚本中正确调用这些方法,就必须学会如何在 JavaScript 环境中构造出符合 Java 类型系统要求的参数...

发布于 Android 逆向

Frida 综合情景案例分析

前面几篇教程我们搭建了 Frida 开发环境、掌握了构造数组和对象参数的技巧。本文将进入实战环节,通过 5 个典型案例 覆盖 Frida 逆向中最常见的场景:登录拦截、SSL Pinning 绕过、返回值篡改、密钥替换和 JNI Hook。每个案例都会给出可复用的完整脚本。 案例1:Hook 登录接口获取用户名密码 分析目标 APP 的登录流程 在逆向一个 APP 时,登录接口往往是...

发布于 Android 逆向

Objection 快速逆向、自动分析和主动调用

前言:为什么需要 Objection 在 Android 逆向分析中,Frida 已经成为最强大的动态插桩工具。但实际使用时你会发现,许多操作是重复性的:查看 Activity 列表、搜索特定类名、hook 某个方法查看参数和返回值——每次都需要手写一段 JavaScript 脚本,然后通过 frida -U -f com.app -l hook.js 加载。这种模式虽然灵活,但在快速逆向...

发布于 Android 逆向

Objection 环境介绍,自动化分析和插件使用

Objection 简介 Objection 是由安全研究团队 SensePost 开发的一款基于 Frida 的运行时探索工具包(Runtime Exploration Toolkit)。它将 Frida 的底层能力封装为一系列开箱即用的高级命令,让安全研究人员无需编写 JavaScript 脚本,即可快速对 Android 和 iOS 应用进行动态分析和安全评估。 如果说 Frida ...

发布于 Android 逆向

RPC 开放到公网,更多 API 与源码分析

前言 在上一篇文章中,我们深入学习了 Frida RPC 远程调用的概念和实战技巧。当你的逆向分析需要在 PC 端批量调用手机上的加密函数时,RPC 是最高效的方案。然而,当场景升级到"多人协作"或"远程机房"时,你需要将 Frida RPC 服务暴露到公网——这同时带来了便利和安全挑战。 本文将系统讲解如何安全地将 Frida RPC 开放到公网,...

发布于 Android 逆向

RPC 远程调用的概念和实战示例

发布于 Android 逆向

综合案例分析,hook 时机的确定,制作 dex 文件,算法还原的思路

发布于 Android 逆向

FRIDA 高级 API:Frida Hook Java(1&2)、Frida hook native

Java.use() 进阶用法 在 FRIDA 高级逆向中,Java.use() 是 Hook Java 层代码的核心 API。除了常见的 Hook 普通类和方法外,它还支持处理枚举类、内部类和匿名类等复杂 Java 结构。 Hook 枚举类 枚举类在 Android 开发中广泛使用,例如定义状态码、类型标识等。使用 Java.use() Hook 枚举类时,需要注意枚举的静态实例是通过...

发布于 Android 逆向

FRIDA辅助分析 OLLVM 字符串加密

OLLVM 字符串加密的详细实现原理 字符串加密是 OLLVM 混淆中最基础也是最实用的 pass 之一。它的目标是将 SO 文件中的明文字符串转换为密文,使得静态分析工具(如 IDA 的 Strings 窗口、strings 命令)无法直接读取敏感信息。 加密流程 OLLVM 字符串加密在 LLVM 编译后端工作,具体流程如下: 源码中的字符串: "https://api.e...

发布于 Android 逆向

FRIDA辅助分析非标准算法

什么是非标准算法 在 Android 逆向分析中,我们遇到的加密算法大致可以分为两类:标准算法和非标准算法。 标准算法:AES、DES、RSA、MD5、SHA 系列等被广泛使用的密码学算法,有公开的规范和实现 非标准算法:开发者自行实现的加密方案,包括魔改标准算法、白盒加密、自定义迭代加密等 非标准算法是逆向分析中最具挑战性的部分,因为没有现成的算法库可以直接调用,必须完整还原其实现逻...

发布于 Android 逆向