MCPcopy
hub / github.com/APKLab/APKLab / generateFridaHook

Function generateFridaHook

src/tools/frida.ts:126–163  ·  view source on GitHub ↗

* Generate Frida TypeScript hook code for a method.

(method: SmaliMethod)

Source from the content-addressed store, hash-verified

124 * Generate Frida TypeScript hook code for a method.
125 */
126function generateFridaHook(method: SmaliMethod): string {
127 const javaParams = method.paramTypes.map(smaliTypeToJava);
128 const javaReturn = smaliTypeToJava(method.returnType);
129
130 const overloadArgs = javaParams.map((p) => `'${p}'`).join(", ");
131 const hookParams = method.paramTypes.map((_, i) => `arg${i}`).join(", ");
132
133 if (method.isConstructor && method.methodName === "<init>") {
134 return `
135// Hook: ${method.className}.<init>(${javaParams.join(", ")})
136Java.perform(() => {
137 const cls = Java.use('${method.className}');
138 cls.$init.overload(${overloadArgs}).implementation = function(${hookParams}) {
139 console.log(\`[*] ${method.className}.<init> called\`);
140${javaParams.map((_, i) => ` console.log(\` arg${i}: \${arg${i}}\`);`).join("\n")}
141 return this.$init(${hookParams});
142 };
143});
144`.trim();
145 }
146
147 const returnLine =
148 javaReturn === "void"
149 ? `this.${method.methodName}(${hookParams});`
150 : `const ret = this.${method.methodName}(${hookParams});\n console.log(\` ret: \${ret}\`);\n return ret;`;
151
152 return `
153// Hook: ${method.className}.${method.methodName}(${javaParams.join(", ")}): ${javaReturn}
154Java.perform(() => {
155 const cls = Java.use('${method.className}');
156 cls.${method.methodName}.overload(${overloadArgs}).implementation = function(${hookParams}) {
157 console.log(\`[*] ${method.className}.${method.methodName} called\`);
158${javaParams.map((_, i) => ` console.log(\` arg${i}: \${arg${i}}\`);`).join("\n")}
159 ${returnLine}
160 };
161});
162`.trim();
163}
164
165/**
166 * Find the APKTool project root from a file path.

Callers 2

generateHookFunction · 0.85
frida.test.tsFile · 0.85

Calls 1

smaliTypeToJavaFunction · 0.85

Tested by

no test coverage detected