Frida 逆向hook方法传参

C++方法如下
main.cpp

#include <iostream>
#include <Windows.h>

void showAge(int age) {
    std::cout << age << std::endl;
}

int main() {
    SetConsoleTitle("Demo");
    showAge(18);
    std::cin.get();
    return 0;
}

运行,用32dbg找到showAge方法的偏移地址为:0x128F
小知识点:push dword ptr [dbp+8]可转化16进制为0xff75(N)
在这里插入图片描述

main.ts

import {log} from "./logger.js";
let address = Process.findModuleByName("demo.exe");
let codeSize = Process.pageSize;
let imp: NativePointer = Memory.alloc(codeSize);
Memory.patchCode(imp, codeSize, code => {
   let writer = new X86Writer(code, {pc: imp});
   writer.putPushReg("ebp"); 				//push ebp
   writer.putMovRegReg("ebp", "esp");	    //push ebp, esp
   writer.putBytes(new Uint8Array([0xff, 0x75, 8]).buffer as ArrayBuffer); //push dword ptr ss:[ebp + 8]
   writer.putCallAddress(address?.base.add(0x128F)!);	//call 0xxxx128F
   writer.putAddRegImm("esp", 4); 		//add esp, 4
   writer.putMovRegReg("esp", "ebp");	//mov esp, ebp
   writer.putPopReg("ebp"); 			//pop ebp
   writer.putRet();						//ret
   writer.flush();
});
let callMemFun = new NativeFunction(imp, 'void', ['int']);
let result = callMemFun(4);

运行

frida -l .\_agent.js Demo.exe
Frida是一个动态代码插桩工具,它允许你在运行时修改、监控和拦截应用程序中的函数调用。如果你想hook(挂钩)Android应用中的`onCreate`方法,你需要按照以下步骤操作: 1. **安装Frida**:首先,确保你已经在设备上安装了Frida Server,并通过USB连接到你的Android设备。 2. **编写JavaScript脚本**:创建一个`.js`文件,例如`hook_oncreate.js`,在这个文件中,你可以使用Frida提供的API来查找并hook目标类的`onCreate`方法。下面是一个简单的例子: ```javascript // 导入frida模块 const { Session, attach } = require('frida'); // 设定要调试的应用包名和进程名称 const packageName = 'com.example.app'; const processName = 'app'; async function main() { // 连接到目标应用 const session = await attach(processName); // 搜索特定类名下的onCreate方法 const className = 'YourActivityClassName'; // 替换为你想hook的Activity全名 const createMethod = session.createInterceptor(className, 'onCreate', { condition: 'true' }); // 当onCreate方法被调用时执行自定义逻辑 createMethod.onEnter((args) => { console.log(`onCreate method called with args: ${JSON.stringify(args)}`); // 在这里可以添加你的hook处理代码 }); // 注册回调并返回结果 return session; } main().catch(err => console.error(err)); ``` 3. **加载脚本到目标应用**:将上述脚本保存后,使用命令行工具(如`adb shell`)加载到手机上,命令类似于: ```bash adb -s <device_id> inject <path_to_your_script>/hook_oncreate.js ``` 4. **监控和调试**:现在`onCreate`方法会被你的脚本钩住并在进入时执行你的自定义逻辑。你可以通过打印日志或执行其他操作来查看或改变其行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值