一款基于Frida的Android- SO动态库逆向命令行工具

前言

YJ是一款基于Frida框架的款Native层逆向分析的交互式工具,就像在GUN-LINUX上使用GDB工具一样,设计YJ的灵感来自GNU-GDB调试工具,它通过交互命令模式轻松地向展示你想要窥探的内存数据

Frida是一个底层hook工具及框架。提供了hook工具的同时也提供了大量的API操作,基于Frida框架的大多都是一些对Java代码层的一个Hook集成,而对于Native层方面较为全面的分析工具很零碎

安装

首先你得有Frida,我在开发和测试阶段分别采用了frida-15.2.2frida-16.0.0,而在完成开发的阶段已经发布了16.0.10,最后采用16.0.3是出于16.0.0发布的snapshots功能,它能提高YJ加载到交互界面的性能,目前该功能还在测试阶段,在不久后将会发布

pip3 install frida==16.0.0
git clone https://github.com/yang-datong/YJ-3.git

Linux(Option)

如果是Linux发行版那么需要安装llvm套件(因为我是在MacOS中开发的,当时没想到兼容性),主要是使用llvm-objdump,以Ubuntu为例:

apt install llvm

使用

下列图示的环境:

  • 目标应用:YouTube 17.35.35 (size:19.98M)
  • 手机:小米10

通过ADB连接上已经开启了frida-serverAndroid手机

cd YJ-3
python3 exp.py [你的目标应用名称]

请添加图片描述

看起来有点意思,这是一个简单的内置shell交互模式

试用了一些python内置shell库都感觉不够轻量

YJ提供了一些在我用GDB调试时的一些常见命令,具体可以看help命令的输出文本,默认YJ启动的是attach模式直接附加到当前的App中:

可以通过python3 exp.py --help来查看spawn模式来调试目标进程,或者通过load来加载你的脚本(默认加载脚本为model/main.js)

  • 如果你有明确的逆向分析函数的话你可以直接使用breakpoint [functionName]来对目标地址下监控点(breakpoint支持对函数名、lib库名+具体偏移偏移、计算表达式下监控点,然后也可以删除当前监控点,重新监控到另一个地址)
    请添加图片描述

  • 如果没有明确分析具体的函数,那么可使用watch命令来监控具体的lib库内存,如下:

请添加图片描述

如果该lib库是个热点库,那么立马会回收到监控的内存空间具体调用信息,

请添加图片描述

找到目标地址后,unwatch停止内存监控,进入一下操作,通过breakpoint [address]对目标地址下入监控点

请添加图片描述

当地址被执行时,那么就进入到我们的内存视图(arm64的寄存器非常多,这里一整页已经装不下了)

请添加图片描述

请添加图片描述

现在可以尽情享受了,你可以通过’print’、‘hex’、‘telescope’、'hexdump’等命令详细的查看指定的内存数据,比如

请添加图片描述

无Root

对于无root设备frida提供了frida-gadget库,之前将gadget.so用脚本一键注入到目标进行并使YJ调试上去的时候发现apktool重新打包的性能消耗太严重,考虑到稳定性现在只保留一键注入到lib库中,后续的打包以及绕过操作自行处理

请添加图片描述

通过bash inject.sh [gadgetInteractionType]可以选择你的gadget执行的模式,如监听模式脚本模式具体看https://frida.re/docs/gadget/

脚本模式中默认使用的脚本为explore.js 你可以在main()中定义你的规则

环境问题

电脑:目前只支持在bashpython环境中的机器,大众的来说Mac OSGUN-Linux可用,Windows不可用(以后会考虑在powershell中实现类bash的功能)

手机:目前只支持Android

调试目标:目前只支持Android Native层调试,Java层无任何支持

后续

  • 性能优化:会考虑热点功能函数使用全C实现
  • 自定义插件入口:扩展功能编解码器中直接从内存抽帧
  • 多平台支持:Windows
  • 数据结构详细分析:堆链条、内核结构、更详细完整的内存信息

开源协议

!!!免责声明!!!

因为设计到了逆向安全领域,所以不得不慎重声明,本项目使用Apache License 2.0开源协议

1.授权使用者免费使用个人专利

2.使用者必须放置协议说明

3.使用者需要对修改部分声明

4.禁止用作者的名号进行商业广告

5.原作者不承担代码使用后风险

本项目仅作为学习使用,一切后果本人概不负责

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/330140.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

防火墙如何处理nat(私网用户访问Internet场景)

目录 私网用户访问Internet场景源NAT的两种转换方式NAT No-PAT NAPT配置思路规划 NAPT配置命令配置接口IP地址并将接口加入相应安全区域配置安全策略配置NAT地址池配置源NAT策略配置缺省路由配置黑洞路由 私网用户访问Internet场景 多个用户共享少量公网地址访问Internet的时候…

CAN记录仪在矿卡中的应用

CAN数据记录仪在矿卡中主要用于记录和监控车辆的运行数据,以保障安全和提高运营效率。那么就需要记录整车数据来进行车辆诊断分析,查找问题解决问题。 CAN数据记录仪可以记录矿卡的各种运行参数,如发动机转速、车速、制动状态、转向状态、油…

首届PolarDB开发者大会在京举办,阿里云李飞飞:云数据库加速迈向智能化

1月17日,阿里云PolarDB开发者大会在京举办,中国首款自研云原生数据库PolarDB发布“三层分离”新版本,基于智能决策实现查询性能10倍提升、节省50%成本。此外,阿里云全新推出数据库场景体验馆、训练营等系列新举措,广大…

Git项目分支管理规范

一、分支管理 创建项目时,会针对不同环境创建两个常设分支(也可以算主分支,永久不会删除) master:生产环境的稳定分支,生产环境基于该分支构建。仅用来发布新版本,除了从release测试分支或 hotfix-*Bug修复分支进行m…

redis数据安全(四)复制

关系数据库通常会使用一个主服务器向多个从服务器发送更新,并使用从服务器来处理所有读请求,Redis也采用了同样的方法来实现自己的复制特性,并将其用做扩展性能的一种手段。 一、特点: 1、异步复制:Redis默认使用的是…

Mysql 数据库DML 数据操作语言—— 对数据库表中的数据进行增删改

DML:数据操作语言,用来对数据库表中的数据进行增删改 前提,数据库里面有一张表,具体如何创建,请看上篇文章 1、增添数据 1.1、给指定字段增添数据 insert into tt4 (name,age) values (张三,18); 1.2、给全部字段添…

使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

k8s集群环境搭建以及插件安装

前置条件 终端工具MobaXterm很好用。 1、虚拟机三台(ip按自己的网络环境相应配置)(master/node) 节点ipk8s-master192.168.200.150k8s-node1192.168.200.151k8s-node2192.168.200.152 2、关闭防火墙(master/node) systemctl stop firewalld systemc…

【Linux 命令】tree 对目录进行树形展示

目录 1、tree 命令功能展示 2、tree 命令安装 3、tree 命令语法及其参数功能 4、终止 tree 展开树命令 1、tree 命令功能展示 在 Linux 中,我们使用 ll 命令对目录的展示并不太方便我们查看,不太清晰明了,所以我们可以使用 tree 命令以…

Dubbo核心功能解析

Dubbo核心功能讲解 Dubbo是一个精耕服务治理领域的框架,秉承了阿里一贯的大而全风格,和Eureka相比复杂度有不小的提高,这一节我们选了Registry和Remoting两个核心模块,从功能层面做个简单的了解(后面的章节会深入介绍底层原理) …

渗透测试之Mimikatz2.2 如何抓取Win11登录明文密码

环境: 1.攻击者IP:192.168.1.35 系统: KALI2022(vmware 16.0) 2.靶机IP:192.168.1.16 系统: Windows11 3.USB无线网卡 4.Mimikatz 2.2 (win版) 问题描述: Mimikatz2.2 如何抓取Win11登录明文密码 解决方案: Wdigest WDigest协议是在WindowsXP中被引入的,旨在与H…

vue 中使用低版本高德地图1.4 , 解决热力图渲染展示在可视化区域内使用setFitViewt跳转不起作用,计算地图的缩放级别和中心点

效果,点击渲染热力图 地图自适应可视化区域展示所有热力图 /热力图数据const data [{ lng: 118.77, lat:32.03, count: 100 },{ lng: 118.82, lat: 32.02, count: 100 },{ lng: 118.77, lat:32.02,count:80},{ lng:118.75, lat: 32.01, count: 50 },{ lng:118.82…

借助AI技术提高图片转换为Excel表格的效率与准确性

在当今数字化时代,数据已经成为企业决策的重要依据。然而,在数据收集和整理过程中,许多企业面临着将图片中的表格转换为Excel格式的难题。这些图片可能来自扫描仪、网络、社交媒体等,数量庞大且格式不一,处理起来费时费…

GEE中Landsat、Sentinel、Modis主要数据集区别

一、Landsat 1. Collection 1/2 的区别 Collection 2 是Landsat Level 1 数据的又一次重大再处理,显著提高了绝对地理定位精度。 Collection1Collection2时间跨度1972~2021底1972~至今数据等级level 1level1:1972~2021底 level2:1982~至今 …

js逆向第22例:猿人学第18题jsvmp洞察先机

文章目录 一、前言二、定位关键参数1、处理CryptoJS加密2、被加密的值`value`和密钥`secret`是怎么来的三、代码实现一、前言 任务十八:抓取这5页的数字,计算加和并提交结果 标题已经给到提示jsvmp,这里先了解一下它: jsvmp技术提供了一种将JS代码编译成二进制指令集的方法…

index_jsp报错

今天跟着视频一模一样敲代码,一直报500 搜索了好几篇csdn,不断地修改添加的jstl.jar 和standard.jar,修改这两个jar包版本,还是报500 又看到说是因为tomcat10中存在jsp.jar,同时存在发生冲突,于是把tomcat…

nas-群晖docker查询注册表失败解决办法(平替:使用SSH命令拉取ddns-go)

一、遇到问题 群晖里面的docker图形化界面现在不能直接查询需要下载的东西,原因可能就是被墙了,那么换一种方式使用SSH命令下载也是可以的,文章这里以在docker里面下载ddns-go为例子。 二、操作步骤 (一)打开群晖系统…

安卓apk加固后重签名

背景 等保检测,安卓apk使用第三方加固后签名信息会丢失,需要我们重新进行签名 使用jarsigner签名遇到的问题 APP失效无法安装 如何解决签名失效 我们在这里使用Android SDK的apksigner进行签名 mac系统,apksigner 需要设置环境变量 1、…

metinfo_6.0.0 任意文件读取漏洞复现

漏洞点为/include/thumb.php 一测:/include/thumb.php?dir..././http/..././config/config_db.php 二测:/include/thumb.php?dir.....///http/.....///config/config_db.php 三测:/include/thumb.php?dirhttp/.....///.....///config/conf…

Kafka-消费者-KafkaConsumer分析

与KafkaProducer不同的是,KafkaConsumer不是一个线程安全的类。 为了便于分析,我们认为下面介绍的所有操作都是在同一线程中完成的,所以不需要考虑锁的问题。 这种设计将实现多线程处理消息的逻辑转移到了调用KafkaConsumer的代码中&#x…