hook框架-frida简单使用模板以及frida相关接口
一目录结构
├── test.py #py脚本
└── test.js #js脚本
一.py脚本
test.py
import frida
import sys
#连接设备app
dev=frida.get_usb_device() # get_usb_device获取设备
PACKAGE = 'cn.soulapp.android' # 包名
process = dev.attach(PACKAGE) # 获取给定包名的app进程
#运行脚本
#获取js脚本内容
with open('test.js', 'r') as fr:
js_test=fr.read()
script = process.create_script(js_test) # 这里是把你的js脚本给塞进了process
#可以获取打印效果
def show(message,data):
print(message)
script.on("message",show)
# 加载脚本
script.load()
sys.stdin.read()
二.js脚本
Java.perform(function(){ //固定写法所有脚本就要丢在里面
var c =Java.use('cn.soulapp.android.utils.j'); //Java.use获取cn.soulapp.android.utils.j这个类
c.e.implementation =function(a){return false}; //类的方法复制
});
三.frida相关接口
一.Java.perform(function()
返回值:空
用途:这是frida的main,所有的脚本必须放在这个里面
二. Java.use(类名)
返回值:类的对象
用途:动态获取一个类的对象
拓展:$new()实例化对象, $dispose()销毁对象
三.Java.available
返回值:boolean。
用途:确认当前进程的java虚拟机是否已经启动,虚拟机包括Dalbik或者ART等。虚拟机没有启动的情况下不要唤醒其他java的属性或者方法。
四.Java.enumerateLoadedClasses(callbacks)
返回值:无
参数:回调函数
用途:列出当前已经加载的类,用回调函数处理
回调函数:
onMatch:function(className){ }
找到加载的每个类的时候被调用,参数就是类的名字,这个参数可以传给java.use()来获得一个js类包
onComplete: function ():
列出所有类之后被调用 ,也就是完成后做一些扫尾工作
五.Java.enumerateLoadedClassesSync()
返回值:所有已经加载的类的数组。
六.Java.scheduleOnMainThread(function()
返回值:无
用途:在线程上运行指定的函数
七.Java.choose(className, callbacks):
用途:查找堆中指定类的实例。获得实例后可以调用实例的函数
回调函数
onMatch: function (instance)
每次找到 指定类的实例后调用,
onComplete: function ()
完成时调用
八.Java.cast(handle, klass)
返回值:类的对象
参数:句柄(ptr),klass(use()的返回值)
用途:用来获取 指定内存地址的类的实例 的对象。这个对象有类属性,可以得到所属类的对象。还有$className属性过去类名的字符串。一个对象有可能有很多实例
例子:
var Activity = Java.use("android.app.Activity");
var activity = Java.cast(ptr("0x1234"), Activity);
四.总结
java接口的api中,perform是必须用,没什么实际作用。use是最常用的,用来获取类的对象,获取对象后就可以替换具体方法的实现了,相当于修改源码!!choose和cast是针对运行时对象的实例,相当于动态调试过程中获取信息。
hook框架-frida简单使用模板以及frida相关接口的更多相关文章
- hook框架frida的安装以及简单实用案例
1.下载地址 https://github.co/frida/frida/releases 2.另外两种安装方法 1.Install from prebuilt binaries This is th ...
- hook框架frida添加至于安卓应用中
转载至于https://koz.io/using-frida-on-android-without-root/ Frida is a great toolkit by @oleavr, used to ...
- 框架Thinkphp5 简单的实现行为 钩子 Hook
这篇文章主要介绍了关于框架Thinkphp5 简单的实现行为 钩子 Hook,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现在一个方法开始和结束加入两个行为:api_init.ap ...
- laravel5.1框架基础之Blade模板继承简单使用方法分析
本文实例讲述了laravel5.1框架基础之Blade模板继承简单使用方法.分享给大家供大家参考,具体如下: 模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容 ...
- 如何设计Java框架----一个简单的例子【翻译】
原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框 ...
- 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...
- Android Hook框架adbi源码浅析(一)
adbi(The Android Dynamic Binary Instrumentation Toolkit)是一个Android平台通用hook框架,基于动态库注入与inline hook技术实现 ...
- android免root hook框架legend
一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...
- Android中免root的hook框架Legend原理解析
一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...
随机推荐
- [转]十分钟带你理解Kubernetes核心概念
本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...
- 并发系列(二)——FutureTask类源码简析
背景 本文基于JDK 11,主要介绍FutureTask类中的run().get()和cancel() 方法,没有过多解析相应interface中的注释,但阅读源码时建议先阅读注释,明白方法的主要的功 ...
- 深入理解Spring AOP 1.0
本文相关代码(来自官方源码spring-test模块)请参见spring-demysify org.springframework.mylearntest包下. 统称能够实现AOP的语言为AOL,即( ...
- 7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
计算几何之所以难学 就是因为太抽象了 不够直观 而且情况很多 很繁琐 甚至有一些东西不清不楚.. 这道题注意到题目中的描述 一个鸽子在两个点所连直线上也算. 通过看题解 发现这个地方并非直线而是线段 ...
- 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!
对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...
- FreeSql增加新特性Context
源 FreeSql 作者做了很完善的组件 我看了一下,感觉很实用,使用上有很大的可自定义操作的地方,跟传统Orm固定格式不同,也异于Dapper的设计,支持表达式树 原地址 https://www.c ...
- 【JZOJ4726】种花 题解(贪心+堆)
题目大意:在一个长度为$n$的环型序列中取出$m$个数使这$m$个数的和最大,且要求这$m$个数互不相邻. ---------------------- 考虑维护$nxt$和$lst$,即一个数的前驱 ...
- PEP8之常用编码规范-摘自官网
PEP8是广泛应用于Python编码中的规范,这里只会记录最重要的一部分:摘自官网 使用4个空格缩进,不要使用制表符. 4个空格是一个在小缩进(允许更大的嵌套深度)和大缩进(更容易阅读)的一种很好的折 ...
- python8.1多线程
import threadingimport time def run1 (name,sex): print(name,sex,"执行线程1") time.sleep(3)def ...
- Jenkins(Extended E-mail Notification)邮箱配置正确但是并没有发送邮件
废话 近期在把之前的接口自动化demo与jenkins集成,昨天发现了邮件配置正确但是没有发送邮件的问题,通过勾选系统设置 - >Extended E-mail Notification -&g ...