一、Frida 利用 Hopper、class-dump、ios-ssl-kill-switch、Keychain-Dumper、MachOParser 可以进行静态分析。 UIButton 的sendActionsForControlEvents、DerekSelander LLDB(Python scripts to aid in your debugging sessions)、frida Frida 是一款基于 Python + javascript 的 hook 框架,通杀 android\iOS\linux\win\osx 各平台。 Frida 原理是手机端安装一个 server 程序把手机端的端口转到 PC 端写的 python 脚本进行通信,而 Python 脚本中采用 javascript 语言编写 hook 代码。 ① install frida on device Start Cydia and add Frida’s repository by navigating to Manage -> Sources -
文章目录 一、Frida 框架使用环境 二、Frida 框架作用 三、Frida 框架模块 一、Frida 框架使用环境 ---- Frida 官网 : https://frida.re/ Frida 源码 : https://github.com/frida Frida 框架使用环境 : JDK 8 : 具体的版本是 java version “1.8.0_144” ; Python 3.7 版本 : 系统中中安装多个 Python , 保证 3.7 版本的环境变量在最上面即可 ; Frida 12.7.5 版本 : 到 https://pypi.org/project /frida/#history 页面下载 Frida ; frida-tools 5.1.0 版本 : IDA 7.0 版本 : 参考 https://hanshuliang.blog.csdn.net , 整体分析应用逻辑 ; 分析数据 : 分析 字符串 , 整数 , 浮点数 数据 , 找出 字符串拼接规律 , 加密逻辑 , 接口访问规律 ; 三、Frida 框架模块 ---- Frida 框架中
即将手机上的app的内容发送到PC上的frida python程序,然后处理后返回给app,然后app再做后续的流程,核心是理解send/recv函数 <TextView android $new(string_to_recv); this.setText(my_string); } }); import time import frida import base64 () pid = device.spawn(["myapplication.example.com.frida_demo"]) device.resume(pid) time.sleep(1) session = device.attach(pid) with open("frida_demo2.js") as f: script = session.create_script(f.read()) script.on("message", my_message_handler) script.load() input() 参考链接:https://github.com/Mind0xP/Frida-Python-Binding
/* * raptor_frida_android_trace.js - Code tracer for Android * Copyright (c) 2017 Marco Ivaldi <raptor @0xdeadbeef.info> * * Frida.re JS script to trace arbitrary Java Methods and * Module functions for * See https://www.frida.re/ and https://codeshare.frida.re/ * for further information on this powerful * * Example usage: * # frida -U -f com.target.app -l raptor_frida_android_trace.js --no-pause * * Get the latest version at: * https://github.com/0xdea/frida-scripts/ */ var logContentArray =
说明 因为想学习怎么hook安卓程序,网上搜了一些资料,有xposed和frida两种。 xposed不便于调试,frida方便调试。所以先从学习frida入手。 手动安装pip后再安装frida,安装完成后无法运行frida命令。然后卸载后又手动安装的官网版python。 pip install frida pip install frida-tools 安装完成后运行frida --version测试是否成功,并记住版本号。 后面安装frida-server时要选择一致的版本。 安卓端安装frida-server 安装ADB 安装frida-server需要通过adb连接安卓。 frida-server下载地址:https://github.com/frida/frida/releases 打开后点Show all 247 assets查看所有的下载链接(里面247数字可能有变化
实验环境 windows 10 vscode frida 16.2.1 jadx-gui Frida相关api介绍 1.Process、Module、Memory基础 1.Process Process = null){ //Interceptor.attach是Frida里的一个拦截器 Interceptor.attach(helloAddr,{ hookTest2(); } }); } 8.借助IDA脚本实现一键式hook 通过MyIDAFrida直接生成,默认应该只适用于attach模式 粘贴到文件,之后也是通过的方式启动 frida = null){ //Interceptor.attach是Frida里的一个拦截器 Interceptor.attach(helloAddr,{
文章目录 一、安装 frida 12.7.5 二、安装 frida-tools 5.1.0 三、PC 端 frida 与 安卓模拟器端 frida-server 一、安装 frida 12.7.5 -- ==12.7.5 命令 , 安装 frida 12.7.5 版本 ; 二、安装 frida-tools 5.1.0 ---- 执行 pip install frida-tools==5.1.0 命令 , 安装 frida-tools 5.1.0 版本 ; 三、PC 端 frida 与 安卓模拟器端 frida-server ---- frida-tools 命令行工具 / frida 开发模块 -> frida-server 在上一篇博客 【Android 逆向】Frida 框架 ( Frida 2 种运行模式 | Frida 12.7.5 版本相关工具下载地址 | 在 Android 模拟器上运行 Frida 远程服务程序 ) 中 , 将 frida-server-12.7.5-android-x86 可执行程序拷贝到了 Android 模拟器的 /data/system/frida/frida-server
前文已经介绍了 frida 中的核心组件 frida-gum 以及对应的 js 接口 gum-js,但仅有这些基础功能并不能让 frida 成为如此受欢迎的 Instrumentation (hook) 而这一切的实现都在 frida-core 之中,正如名字所言,这其中包含了 frida 相关的大部分关键模块和组件,比如 frida-server、frida-gadget、frida-agent、frida-helper 传送门: Frida Internal - Part 1: 架构、Gum 与 V8 Frida Internal - Part 2: frida-core (本文) Frida Internal - "); frida_script_options_set_runtime (options, FRIDA_SCRIPT_RUNTIME_QJS); script = frida_session_create_script_sync frida-gadget 除了 frida-server,另外一个比较常用的模块就是 frida-gadget 了。
前言 frida-unpack是一个基于frida的脱壳工具,项目地址:https://github.com/chzphoenix/frida-unpack 但是作者说明的不够详细,使用的时候遇到了种种问题 注意我的android版本是8.1.0 安装frida 因为是基于frida框架,所以需要安装frida,这个可以参考frida官方文档,或者参考我之前的一篇文章: 获取libart.so(libdexfile.so 问题 Error: expected a pointer 如果报错: Error: expected a pointer at value (frida/runtime/core.js:367)
查看手机cpu adb shell getprop ro.product.cpu.abi 下载对应frida-server frida frida-server-12.6.6-android-arm.xz frida需要在root权限运行 adb root adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local /tmp/frida-server" adb shell "data/local/tmp/frida-server &" 设备是否连接正常 adb devices -l frida-ps -U # 会显示进程列表 frida-trace -U -i open com.android.chrome #监控app frida -U -l example.js com.example.dlive #向app -U -l frida.js com.demo.android_frida ____ / _ | Frida 12.4.8 - A world-class dynamic instrumentation
本篇介绍 frida 也支持hook native,本篇看下如何hook native hook native函数 这次hook下设置,首先看下用了哪些so: objection -g com.android.settings % frida -UF -p 25064 -l hook.js ____ / _ | Frida 15.1.24 - A world-class dynamic instrumentation More info at https://frida.re/docs/home/ . . . . . . . . % frida -UF com.android.settings -l hook.js ____ / _ | Frida 15.1.24 - A world-class dynamic More info at https://frida.re/docs/home/ . . . . . . . .
Frida常用命令。 com.autonavi.map.activity.NewMapActivity # 关闭App(包名) adb shell am force-stop com.autonavi.minimap # 启动frida-server /data/local/tmp/frida-server-12.8.0-android-x86 # 启动frida-server(Pixel真机) . /data/local/tmp/frida-server-12.8.0-android-arm64 # 转发端口 adb forward tcp:27042 tcp:27042 adb forward
在使用命令frida -U -f 包名 -l hook.js时报如下错误: Failed to spawn: need Gadget to attach on jailed Android; its default 解决方法 重启frida-server。
多台设备 连接多台设备还是很简单的,使用Frida作者oleavr(很多人称他是大胡子,以后就用这个称呼了)为我门提供的python binding功能。 当然前提是相应设备的frida-server已经开了。 根据设备id就可以获取相应设备的device。使用的函数是get_device。 看似很简单的一个功能,目前却仅有Frida可以实现。后面的这句话我不清楚是否真假,就我所知道的,它是真的,不过通过这句话也能感受到Firda的强大。 •send(message[, data]): send the JavaScript object message to your Frida-based application (it must be 远程调用(RPC) 在 Frida API使用(1) 对RPC进行了介绍。在文章中把js和python代码写在了一个文件中,最好是把他们分开写,这里不再举例。
this.a(arg1, arg2); // 获取到返回值 var decrypt = ""; for (var i = 0; i < retVal.length; i++) { // frida
应对这种情况有两种方案: 刷机重写系统调用表来拦截内核调用 inline Hook SWI/SVC指令 我们今天采用第二种方法,用frida来实现 内联汇编SWI/SVC做系统调用, syscall frida inline hook hook syscall frida ArmWriter frida typescript project 二、步骤 inline Hook 原理 . 执行备份指令,和我们自己的逻辑 执行备份指令比较简单,但是我们自己的逻辑可不能用Arm汇编来写,frida已经帮我们想好了,可以创建一个 NativeCallback, 执行备份指令之后,直接可以跳转到 frida 脚本采用 typescript project, 调试和编译脚本的时候需要参照 https://github.com/oleavr/frida-agent-example 。 frida-syscall-interceptor和frida-agent-example在同级目录。
一.异常报告 frida.NotSupportedError: unexpected error while attaching to process with pid xxxx 二.解决方法 #首先要重启下 adb #断开之前的frida #adb shell #su root #setenforce 0 变为Permissive模式就可以了 #补充 0: 切换成 permissive(宽容模式);
的安装 今天我们用到的frida框架分为两部分: 一部分是运行在系统上的交互工具frida CLI; 另一部分是运行在目标机器上的代码注入工具 frida-server。 (2) frida CLI是安装的frida的其中一个工具,也是最常用的一个工具。 2、frida server frida-server需要我们单独下载,在 frida项目的github上可以直接下载对应系统已经编译好的frida server 图2 我们需要下载的文件名的格式是: 图3 将Android设备上的frida-server添加执行权, 并运行该程序(需要root权限) 图4 3、frida tools 前面说过, frida CLI只是frida的其中一个工具, frida 图6 另外还有四个分别是: frida-trace, frida-discover, frida-ls-devices, frida-kill 由于不是经常用到,这边就不一一详细介绍了, 感兴趣的同学可以去
//调用方法 function printStack() { Java.perform(function () { var Exception = Java.use("java.lang.Exception"); var ins = Exception.$new("Exception"); var straces = ins.getStackTrace(); if (straces != undefined && straces !=
市面上大多数的手机都是非ROOT的,不能为了使用一次Frida就去刷机吧。 刷机有风险,智能变板砖。笔者曾刷小米6的手机,结果很不幸。 非ROOT环境下使用Frida 本文使用的apk是领跑娱乐.apk。有需要的可以私心我。一个赌博类的app,不要作非法的事情噢。 通过logcat可以看到如下的信息,说明frida-server已经开启了监听。 (10)运行 frida-UGadget-l1.js。脚本能够正常运行,于是可以愉快的HOOK了。 写在最后 这种方式有一个明显的缺点,那就是需要修改smali源代码,而很多apk是不允许修改smali源码的(dex文件),当然这个可以通过Frida给HOOK掉。 有什么办法不改smali? 有的,通过动态连接库的依赖加载来实现,这个会在Frida高级篇进行介绍。 公众号 关于Frida更多内容,欢迎关注我的微信公众号:无情剑客。