Lazy loaded image
Frida主动调用函数
字数 1407阅读时长 4 分钟
2022-1-10
2024-7-5
type
status
date
slug
summary
tags
category
icon
password

一、 主动调用类方法(java静态方法)

函数是有static关键字修饰的,所以是个类方法(静态方法)。
调用格式:类名引用.方法名(参数,...)

二、 主动调用native类方法 (静态native方法)

这个函数有static关键字的 所以是个类方法(静态方法)这里有native 关键字 所以是个静态的c方法
调用格式:类名引用.方法名(参数,...)

三、主动调用对象的java方法

函数是没有static关键字,所以是个对象方法(实例方法)
主动调用有2种方式:
  • 直接获取内存中已存在的对象(建议使用)
  • 创建一个新对象
因为运行过程中对象的成员的值可能已经发生变化,所以如果创建一个对象,新对象的值还是初始值,在调用算法或者函数的时候,可能会产生影响。 所以这里建议直接获取内存中已经有的对象
调用格式:
  1. instance.方法名(参数,...) //直接获取已有对象
  1. 类名引用.方法名(参数,...) //新创建的对象

1、直接获取内存中对象主动调用

Frida的api:
主动调用代码

2、创建一个新对象主动调用代码

Frida创建对象的语法 $new()
$new()是调用类的构造函数,新建一个对象。
注意两点
  1. 如果 没有构造函数 或 构造函数没有参数 直接写$new()
  1. 如果 构造函数有参数,那么一定要填参数 $new(参数,...)
创建一个对象,主动调用代码

四、主动调用对象的native方法

这个函数是没有有static关键字的,所以是个对象方法(实例方法)。
主动调用有2种方式:
  1. 直接获取内存中已存在的对象
  1. 自己创建一个新对象
建议直接获取内存中已经有的对象
调用格式:
  1. instance.方法名(参数,...) //直接获取已有对象
  1. 类名引用.方法名(参数,...) //新创建的对象

1、直接获取内存中对象主动调用

2、创建一个新对象主动调用代码

五、主动调用so方法

Frida用于调用c层函数的API
  • address:要hook的函数地址
  • returnType:返回值类型
  • argTypes[, abi]: 参数类型 这里参数可以是多个
NativeFunction支持的类型
参数有两个 一个是 char* 一个是int
NativeFunction是支持int这个类型的
但是没有char* 对于指针一系列的参数我们可以用 pointer表示,所以这里的返回值类型就是 'pointer',参数类型是['pointer', 'int']
Tip: JavaScript 是没有char* 这个类型的,所以要通过frida的api去模拟,这里Memory.allocUtf8String()申请空间 存入字符串 模拟char*。
上一篇
Unidbg从入门到再入门之学习笔记
下一篇
Hook All In Unidbg(转)

评论
Loading...