写个frida hook构造函数例子
时间: 2023-05-15 13:06:24 浏览: 142
好的,下面是一个使用Frida hook构造函数的例子:
```javascript
Java.perform(function() {
var MyClass = Java.use('com.example.MyClass');
MyClass.$init.implementation = function(arg1, arg2) {
console.log('Constructor called with args: ' + arg1 + ', ' + arg2);
this.$init(arg1, arg2);
};
});
```
这个例子中,我们使用Frida hook了一个名为MyClass的Java类的构造函数。在hook的实现中,我们打印了构造函数的参数,并调用了原始的构造函数实现。
相关问题
使用frida hook android APP中的encrypt类,并将类该中的SM4方法的 paramData传参发送给python处理,python处理后再返回到内存中执行后续代码,你能提供相应的代码吗
好的,以下是一个简单的示例代码,需要在安装了Frida的Android设备或模拟器上运行:
```python
import frida
import binascii
# 要hook的类名和方法名
class_name = "com.example.app.encrypt"
method_name = "SM4"
# 收到参数后的处理函数
def handle_param_data(param_data):
# 在这里进行你想要的处理,这里简单地将参数转换成十六进制字符串并输出
hex_str = binascii.hexlify(param_data).decode("utf-8")
print("Received param data:", hex_str)
# 构造Frida脚本
js_script = """
Java.perform(function () {
// 获取要hook的类
var encrypt = Java.use('%s');
// hook要修改的方法
encrypt.%s.implementation = function (param) {
// 调用处理函数
send(param);
// 继续执行原方法
return this.%s(param);
}
});
""" % (class_name, method_name, method_name)
# 连接设备并加载Frida脚本
device = frida.get_device_manager().enumerate_devices()[-1]
pid = device.spawn(['com.example.app'])
session = device.attach(pid)
script = session.create_script(js_script)
# 接收参数并进行处理
def on_message(message, data):
if message['type'] == 'send':
handle_param_data(data)
script.on('message', on_message)
script.load()
# 等待应用启动并执行
device.resume(pid)
```
需要注意的是,这段代码只是一个简单的示例,如果要hook的类和方法有更多的参数,需要进行相应的修改。另外,由于涉及到加密算法,需要注意不要泄露敏感信息。
Frida 远程函数调用
Frida远程函数调用是指在Hook过程或者黑盒调用过程中,通过RPC来主动调用二进制文件的函数。这种调用方式可以实现一些基础的使用方式,也可以进行一些进阶的操作,比如构造疑难函数参数等。\[1\]
在Python脚本中,可以使用Frida库来实现远程函数调用。首先,需要通过adb命令将本地端口与设备端口进行转发。然后,使用Frida库连接到目标应用程序,并加载自定义的JavaScript脚本。在JavaScript脚本中,可以使用Java.perform函数来获取目标类,并重写其中的函数。通过调用send函数,可以将参数发送到Python脚本中进行处理。最后,使用script.load()加载脚本并执行。\[2\]
对于不知道参数的情况,可以使用普通的hook操作来获取参数的值。在JavaScript脚本中,可以使用Java.use函数获取目标类,并重写其中的函数。通过调用send函数,可以将参数发送到Python脚本中进行处理。\[3\]
总结来说,Frida远程函数调用是通过RPC来主动调用二进制文件的函数。可以使用Frida库连接到目标应用程序,并加载自定义的JavaScript脚本来实现远程函数调用。在JavaScript脚本中,可以重写目标类的函数,并通过send函数将参数发送到Python脚本中进行处理。
#### 引用[.reference_title]
- *1* *2* [Frida系列--远程调用(RPC)](https://blog.csdn.net/qq_30135181/article/details/110136589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [【frida逆向开发】frida-rpc远程调用某安app方法获取token](https://blog.csdn.net/weixin_44032232/article/details/111318871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文