# frida-agent-example **Repository Path**: w91wang/frida-agent-example ## Basic Information - **Project Name**: frida-agent-example - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-06 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README // 然后使用下面的命令进行注入 frida -UN xxx.xxx.xx -l main.js // 去掉-N则需要使用pid或者name -N的功能为指定包名 frida -U pid|name -l main.js 代码写在agent中的index.ts中 每次更新会自己重新注入 拦截某个类的某个方法 let vulnerClass = ObjC.classes.VulnerableVault Interceptor.attach(vulnerClass['- getself'].implementation, { // 方法进入前回调 onEnter: function(args) { log(args[2].toString()); // 修改参数内容 args[2] = ptr(1) }, onLeave:function(retval:any){ // 调用返回值对象中的win方法 let returnedObj = new ObjC.Object(retval); returnedObj.win() } }); // 遍历所有类 ObjC.enumerateLoadedClasses({ onMatch: function(className) { // 每个类的处理回调 }, onComplete: function() { // 处理完成回调 } }); chooseSync和choose 寻找某个类的实例 ObjC.choose(className, { onMatch: function (instance) { // 每次匹配到实例时调用 console.log("Found instance:", instance); }, onComplete: function () { // 所有实例遍历完成后调用 console.log("Search completed"); } }); let objs = ObjC.chooseSync(ObjC.classes.HiddenVault); console.log(objs); $methods获取某个类的方法时后面有:就是有参数