frida动态插桩初探

frida,动态,初探 · 浏览次数 : 7

小编点评

**前言** 分析应用程序的需求促使我学习 Frida 动态插桩技术。Frida 是一个轻量级钩框架,可用于多平台上,例如 Android、Windows 和 iOS 等。 **frida 动态插桩技术** Frida 使用 JavaScript 注入来实现代码执行的动态插桩技术。服务端运行在目标机上,通过注入进程的方式实现劫持应用函数。另一方面,我们运行在控制机的另一部分,与服务端通信。 **环境配置** 为了使用 Frida,我们需要安装其模块。可以使用以下命令安装: ``` pip install frida pip install frida-tools ``` **代码示例** 我使用以下代码展示如何使用 Frida 劫持 Jniint 反向调用: ```java // 获取 Activity 类 var Activity = Java.use('com.erev0s.jniapp.MainActivity'); // 重置 Jniint 的 implementation Activity.Jniint.implementation = function () { // console.log 是用于报告信息回的函数 console.log("[+] Hook Jniint success!\"); // 返回一个随机数 return 6666; }; ``` **步骤** 1. 下载并安装 Frida 模块。 2. 下载对应架构的 frida-server。 3. 将 frida-server 上传到模拟器/手机中。 4. 获取 Activity 类。 5. 重置 Jniint 的 implementation。 6. 设置 Jniint 的 implementation 到一个返回 6666 的函数。 **结论** 通过这篇文章,我们了解了如何使用 Frida 动态插桩技术劫持 Jniint 反向调用。这有助于我们根据需要返回特定数据。

正文

前言

近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术。frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在我们自己的控制机上。frida上层接口支持js、python、c等。

环境配置

安装frida模块

pip install frida

安装frida-tools模块

pip install frida-tools

通过如下命令查看模拟器架构。从 https://github.com/frida/frida/releases 可下载对应架构的 frida-server,并上传到模拟器/手机中。

getprop ro.product.cpu.abi

frida hook java层 实操

这里拿的是一个别人写的 demo文件进行练手。实现的功能是,按了按钮就会返回一个随机数。

用jadx反编译apk可以很容易找到如下代码,我们知道如果我们可以控制 Jniint的返回值,便可以控制打印出来的数据。

通过如下代码便可hook其返回值为 6666。

Java.perform(function () {
    // we create a javascript wrapper for MainActivity
    var Activity = Java.use('com.erev0s.jniapp.MainActivity');
    // replace the Jniint implementation
    Activity.Jniint.implementation = function () {
        // console.log is used to report information back to us
        console.log("[+] Hook Jniint success!");
        // return this number of our choice
        return 6666
    };
});

参考连接

https://xz.aliyun.com/t/8211

https://erev0s.com/blog/how-hook-android-native-methods-frida-noob-friendly/

与frida动态插桩初探相似的内容:

frida动态插桩初探

前言 近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术。frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在我们自己的控制机上。frida上

Frida 原理

frida注入的主要思路: 1.找到目标进程,使用ptrace跟踪目标进程 2.获取mmap,dlpoen,dlsym等函数库的偏移 3.获取mmap,在目标进程申请一段内存空间,将在目标进程中找到存放(frida-agent-32/64.so),在此内存空间启动执行各种操作由agent去实现。 补

【Android逆向】frida 破解 jwxdxnx02.apk

apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查看apk package hfdcxy.com.myapplication; import andr

[Android 逆向]frida 破解 切水果大战原版.apk

1. 手机安装该apk,运行,点击右上角礼物 提示 支付失败,请稍后重试 2. apk拖入到jadx中,待加载完毕后,搜素失败,找到疑似目标类MymmPay的关键方法payResultFalse 4. adb logcat 或者androidstudio 查看该进程的日志,发现以下日志 com.mf

【Android逆向】frida 破解 滚动的天空

1. apk 安装到手机中 2. 玩十次之后,会提示 充值 3. adb shell dumpsys window | grep mCurrentFocus 查看一些当前activity是哪一个 是 AppActivity 4. 阅读代码,感觉是unity3d做的游戏 5. apk拖入到jadx中,

【Android逆向】frida hook so 函数

1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 java -jar ../apktool_2.2.4.jar d app-debug.apk 3. 用j

【Android逆向】Frida 无脑暴力破解看雪test2.apk

1. 安装apk到手机 adb install -t test2.apk apk下载位置: https://www.kanxue.com/work-task_read-800625.htm 2. 题目提示输入一个五位的数字,那么可以尝试暴力破解 3. apk拖入到jadx中可以看到 public c

【Android逆向】静态分析+frida破解test2.apk

有了上一篇的基础 https://www.cnblogs.com/gradyblog/p/17152108.html 现在尝试静态分析的方式来处理 为什么还要多此一举,因为题眼告诉了我们是五位数字,所以可以爆破,不告诉这个题眼的话,就得分析 1. IDA 打开libroysue.so,查看JNI_O

【Android逆向】脱壳项目frida_dump 原理分析

脱dex核心文件dump_dex.js 核心函数 function dump_dex() { var libart = Process.findModuleByName("libart.so"); var addr_DefineClass = null; var symbols = libart.e

【Android逆向】脱壳项目 frida-dexdump 原理分析

1. 项目代码地址 https://github.com/hluwa/frida-dexdump 2. 核心逻辑为 def dump(self): logger.info("[+] Searching...") st = time.time() ranges = self.agent.search_