一目录结构

├── 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相关接口的更多相关文章

  1. hook框架frida的安装以及简单实用案例

    1.下载地址 https://github.co/frida/frida/releases 2.另外两种安装方法 1.Install from prebuilt binaries This is th ...

  2. hook框架frida添加至于安卓应用中

    转载至于https://koz.io/using-frida-on-android-without-root/ Frida is a great toolkit by @oleavr, used to ...

  3. 框架Thinkphp5 简单的实现行为 钩子 Hook

    这篇文章主要介绍了关于框架Thinkphp5 简单的实现行为 钩子 Hook,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现在一个方法开始和结束加入两个行为:api_init.ap ...

  4. laravel5.1框架基础之Blade模板继承简单使用方法分析

    本文实例讲述了laravel5.1框架基础之Blade模板继承简单使用方法.分享给大家供大家参考,具体如下: 模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容 ...

  5. 如何设计Java框架----一个简单的例子【翻译】

    原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框 ...

  6. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  7. Android Hook框架adbi源码浅析(一)

    adbi(The Android Dynamic Binary Instrumentation Toolkit)是一个Android平台通用hook框架,基于动态库注入与inline hook技术实现 ...

  8. android免root hook框架legend

    一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...

  9. Android中免root的hook框架Legend原理解析

    一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...

随机推荐

  1. Vue开启gzip压缩文件

    在你的项目使用了Vue的路由懒加载.Vue使用CDN引用项目组件,减少项目体积 后,还是觉得项目加载速度慢,效果不尽如人意的时候,还有一个“瘦身项目”可以完成,那就是利用nginx和webpack来使 ...

  2. 详解 awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}每个字段的意思

    用这个列子说好了如果NF代表字段 那最后应该是7 才对啊 还有最后怎么都是1呢?END前面的是查看并发吧 后面是查看 tcp连接数 是这样吗?       awk下标采用字符串来表示可能你在其它语言见 ...

  3. Python网络编程基础 PDF 完整超清版|网盘链接内附提取码下载|

    点此获取下载地址提取码:y9u5 Python网络编程最好新手入门书籍!175个详细案例,事实胜于雄辩,Sockets.DNS.Web Service.FTP.Email.SMTP.POP.IMAP. ...

  4. Django学习路2

    1.导入 Django 工程时 在 manage.py 上一级目录导入 2.Add local 本地 Add Remote 远端 3.BASE_DIR 项目所在目录的绝对路径 4.SECRET_KEY ...

  5. Java锁_读写锁

    独占锁:是指锁一次只能被一个线程持有,ReentrantLock和Synchronized都是独占锁. 共享锁:是指锁可以被多个线程持有. 对于ReentrantReadWriteLock,其读锁是共 ...

  6. PHP rmdir() 函数

    定义和用法 rmdir() 函数删除空的目录. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 rmdir(dir,context) 参数 描述 dir 必需.规定要删除的目录. ...

  7. DOM标签属性和对象属性

    DOM元素的属性分为两种 (1)标签属性 直接写在标签上的属性 (2)对象属性 由于所有的DOM元素都是Object类型,所以我们可以通过对象的方式为DOM元素设置属性 1.标签属性 (1)设置标签属 ...

  8. CF R 633 div 1 1338 C. Perfect Triples 打表找规律

    LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于 ...

  9. Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署

    最近尝试引入阿里云的短信验证码,阿里云的core sdk是maven就有的,但是短信相关的jar包却不是放在maven的,所以得引入本地的下载回来的jar包.本地开发直接引入,idea是可以直接跑调用 ...

  10. 《计算机存储与外设》 1Cache存储器与虚拟存储器

    初读这本书,是2020年3,4月吧,以前学的大多数处理器,balabala的,虽然也有介绍储存器的,但总是不是很详细,主要还是关注cpu等计算部件或者总线等事物,就如同这本书中所写,人们往往可以很清楚 ...