Frida Hook Java 的高级用法
Hook 构造函数 构造函数在 Java 中用 <init> 表示,是对象创建时的入口。通过 Hook 构造函数,我们可以在对象初始化之前或之后拦截和修改数据。 基本构造函数 Hook Java.perform(function () { var User = Java.use("com.example.app.model.User");...
Hook 构造函数 构造函数在 Java 中用 <init> 表示,是对象创建时的入口。通过 Hook 构造函数,我们可以在对象初始化之前或之后拦截和修改数据。 基本构造函数 Hook Java.perform(function () { var User = Java.use("com.example.app.model.User");...
OLLVM 字符串加密原理 在 Android 逆向分析中,字符串是最重要的信息载体之一。APP 中的 API 地址、密钥、URL、调试信息等通常以明文字符串的形式存在于 SO 文件中。OLLVM 的字符串加密 pass(String Encryption)通过在编译时将字符串加密为密文,在运行时通过解密函数还原,有效防止了静态分析。 编译时加密 OLLVM 的字符串加密在 LLVM I...
OLLVM 指令替换概述 OLLVM(Obfuscator-LLVM)是目前 Android Native 代码混淆中最流行的工具之一。其中"指令替换"(Instruction Substitution)是其核心混淆手段之一,它将简单的算术和逻辑运算替换为数学上等价但更复杂的表达式,极大地增加了逆向分析的难度。 指令替换的基本原理 指令替换的核心思想是:利用数学等价关...
IDA Trace 功能介绍 IDA Pro 的 Trace 功能是分析复杂算法和混淆代码的强大工具。与简单的断点调试不同,Trace 能够记录一段时间内指令的完整执行序列,包括每条指令的地址、寄存器值、内存读写等信息,为分析提供全局视角。 Trace 的类型 IDA Pro 提供多种 Trace 模式: Trace 类型 记录内容 适用场景 指令 Trace 每条执行过的...
Frida Stalker 工作原理 Frida Stalker 是 Frida 框架中最强大的代码追踪工具,它能够在运行时对任意线程的代码执行进行实时的、指令级别的追踪。与 Interceptor 只能在函数入口和出口设置钩子不同,Stalker 可以追踪目标线程执行的每一条指令,记录完整的执行路径。 核心机制 Stalker 的工作原理可以概括为以下几个步骤: 1. 线程劫持 ...
Frida 和 IDA 的各自优势与局限 在 Android Native 代码逆向分析中,Frida 和 IDA Pro 是两个最核心的工具。它们各自有不同的优势和局限,理解这些差异是制定高效分析策略的基础。 Frida 的优势与局限 优势: 实时动态分析,不需要修改 APK 文件 脚本热加载,即改即用,调试效率高 可以在任何时刻注入和 Hook,不受编译限制 Stalker 提供指...
前言 Frida 是一款开源的跨平台动态插桩工具,它可以在应用程序运行时注入自定义的 JavaScript 脚本,实现对函数调用的 Hook、参数修改、返回值篡改等操作。与 Xposed 不同,Frida 无需重启设备、无需安装框架,即插即用,且同时支持 Android、iOS、Windows、macOS 和 Linux 等多个平台。 在 Android 逆向工程中,Frida 已经成为最...
为什么需要构造复杂参数 在 Android 逆向工程中,我们经常需要 Hook 某些关键函数来分析其行为,或者主动调用目标方法来获取结果。但很多 Java 方法的参数并不是简单的字符串或整数——它们可能是数组、自定义对象、Map、List 甚至枚举类型。如果我们想要在 Frida 脚本中正确调用这些方法,就必须学会如何在 JavaScript 环境中构造出符合 Java 类型系统要求的参数...
前面几篇教程我们搭建了 Frida 开发环境、掌握了构造数组和对象参数的技巧。本文将进入实战环节,通过 5 个典型案例 覆盖 Frida 逆向中最常见的场景:登录拦截、SSL Pinning 绕过、返回值篡改、密钥替换和 JNI Hook。每个案例都会给出可复用的完整脚本。 案例1:Hook 登录接口获取用户名密码 分析目标 APP 的登录流程 在逆向一个 APP 时,登录接口往往是...
前言:为什么需要 Objection 在 Android 逆向分析中,Frida 已经成为最强大的动态插桩工具。但实际使用时你会发现,许多操作是重复性的:查看 Activity 列表、搜索特定类名、hook 某个方法查看参数和返回值——每次都需要手写一段 JavaScript 脚本,然后通过 frida -U -f com.app -l hook.js 加载。这种模式虽然灵活,但在快速逆向...
Objection 简介 Objection 是由安全研究团队 SensePost 开发的一款基于 Frida 的运行时探索工具包(Runtime Exploration Toolkit)。它将 Frida 的底层能力封装为一系列开箱即用的高级命令,让安全研究人员无需编写 JavaScript 脚本,即可快速对 Android 和 iOS 应用进行动态分析和安全评估。 如果说 Frida ...
前言 在上一篇文章中,我们深入学习了 Frida RPC 远程调用的概念和实战技巧。当你的逆向分析需要在 PC 端批量调用手机上的加密函数时,RPC 是最高效的方案。然而,当场景升级到"多人协作"或"远程机房"时,你需要将 Frida RPC 服务暴露到公网——这同时带来了便利和安全挑战。 本文将系统讲解如何安全地将 Frida RPC 开放到公网,...
Java.use() 进阶用法 在 FRIDA 高级逆向中,Java.use() 是 Hook Java 层代码的核心 API。除了常见的 Hook 普通类和方法外,它还支持处理枚举类、内部类和匿名类等复杂 Java 结构。 Hook 枚举类 枚举类在 Android 开发中广泛使用,例如定义状态码、类型标识等。使用 Java.use() Hook 枚举类时,需要注意枚举的静态实例是通过...
OLLVM 字符串加密的详细实现原理 字符串加密是 OLLVM 混淆中最基础也是最实用的 pass 之一。它的目标是将 SO 文件中的明文字符串转换为密文,使得静态分析工具(如 IDA 的 Strings 窗口、strings 命令)无法直接读取敏感信息。 加密流程 OLLVM 字符串加密在 LLVM 编译后端工作,具体流程如下: 源码中的字符串: "https://api.e...
什么是非标准算法 在 Android 逆向分析中,我们遇到的加密算法大致可以分为两类:标准算法和非标准算法。 标准算法:AES、DES、RSA、MD5、SHA 系列等被广泛使用的密码学算法,有公开的规范和实现 非标准算法:开发者自行实现的加密方案,包括魔改标准算法、白盒加密、自定义迭代加密等 非标准算法是逆向分析中最具挑战性的部分,因为没有现成的算法库可以直接调用,必须完整还原其实现逻...