栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Frida 逆向hook方法传参

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Frida 逆向hook方法传参

C++方法如下
main.cpp

#include 
#include 

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030906.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号