一目录结构

├── 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是针对运行时对象的实例,相当于动态调试过程中获取信息。

java hook 框架_hook框架-frida简单使用模板以及frida相关接口相关推荐

  1. 简单介绍一下Java常用的五大框架!

    Java框架在Java开发中的作用是毋庸置疑的.那么Java常用框架有哪些?大概包括:Hibernate.Spring.Struts.jQuery.Redis五种.这些框架有什么用呢?Java常用框架 ...

  2. java认证框架_sa-token 一个的JavaWeb权限认证框架,强大、简单、好用

    sa-token是什么? 一个的JavaWeb权限认证框架,强大.简单.好用 与其它权限认证框架相比,sa-token尽力保证两点: 上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖 ...

  3. java 中常用框架、intell idea简单使用、爬虫系统

    学习:http://www.ityouknow.com/spring-boot.html http://blog.didispace.com/spring-boot-learning-1/ ***in ...

  4. java上传ddi_Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用...

    前面的博客<Android平台dalvik模式下java Hook框架 ddi 的分析(1)>中,已经分析了dalvik模式下 ddi 框架Hook java方法的原理和流程,这里来学习一 ...

  5. Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客<Android平台dalvik模式下java Ho ...

  6. Android平台dalvik模式下java Hook框架ddi的分析(1)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75710411 一.前 言 在前面的博客中已经学习了作者crmulliner编写的, ...

  7. 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  8. 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  9. 知识笔记 - sekiro RPC框架的安装与简单使用

    文章旨在学习和记录,若有侵权,请联系删除 文章目录 前言 一.sekiro是什么 1. 简介 2. 逻辑结构 3. 运行流程 4. 下载和部署 二.如何开发sekiro客户端 1.打开平头哥项目 2. ...

最新文章

  1. jS四种函数的调用方式
  2. 检察机关计算机涉密案例,三原县检察院:扎实做好新时代检察机关保密工作
  3. 如何在 ASP.NET Core 中实现全局异常拦截
  4. wordpress CAS
  5. 颜色空间直方图matlab,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图 | 学步园...
  6. Linux入门之inode解析及管道重定向
  7. spring AOP的方式监控方法的执行时间
  8. showModalDialog的用法
  9. delphi2010安装
  10. 电子系统中的品质因数
  11. SQL摘录笔记 --分组数据(5)
  12. 2020年国赛A题目思路(高教杯全国大学生数学建模竞赛)
  13. 矩阵的转置等于矩阵的逆
  14. window.scrollTo滚动
  15. 【CVPR 2020】蒸馏篇(四):Online Knowledge Distillation via Collaborative Learning
  16. gazebo mesh尝试dae
  17. Fwd: Nginx Rewrite研究笔记
  18. js基础(4) -- 数据类型
  19. 少儿编程开讲了:围棋AI人工智能是如何设计的?揭秘AI神秘面纱!
  20. 上海市考 计算机类岗位,2021年上海市公务员考试职位分析,法学类专业报考优势大...

热门文章

  1. MySQL创建存储过程(CREATE PROCEDURE)
  2. 1.1 Java异常(Exception)处理及常见异常
  3. 2018 年 ACM-ICPC 焦作站现场赛感受
  4. 1001 A+B Format (20 分)【难度: 简单 / 知识点: 模拟】
  5. Redis的Expire与Setex
  6. ActiveMQ中Topic消费者
  7. python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
  8. 【Java】5.2 方法详解
  9. 【PAT】A1060 Are They Equal *
  10. 华为:鸿蒙OS要一统江湖!