-
Notifications
You must be signed in to change notification settings - Fork 226
/
Copy pathfrida.js
65 lines (55 loc) · 1.61 KB
/
frida.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//frida -U -f <package> -l frida.js
function hookFunc() {
var dumpOffset = "0x20801C"; // _kDartIsolateSnapshotInstructions + code offset
var argBufferSize = 150;
var address = Module.findBaseAddress("libapp.so"); // libapp.so (Android) or App (IOS)
console.log("\n\nbaseAddress: " + address.toString());
var codeOffset = address.add(dumpOffset);
console.log("codeOffset: " + codeOffset.toString());
console.log("");
console.log("Wait..... ");
Interceptor.attach(codeOffset, {
onEnter: function (args) {
console.log("");
console.log("--------------------------------------------|");
console.log("\n Hook Function: " + dumpOffset);
console.log("");
console.log("--------------------------------------------|");
console.log("");
for (var argStep = 0; argStep < 50; argStep++) {
try {
dumpArgs(argStep, args[argStep], argBufferSize);
} catch (e) {
break;
}
}
},
onLeave: function (retval) {
console.log("RETURN : " + retval);
dumpArgs(0, retval, 150);
},
});
}
function dumpArgs(step, address, bufSize) {
var buf = Memory.readByteArray(address, bufSize);
console.log(
"Argument " +
step +
" address " +
address.toString() +
" " +
"buffer: " +
bufSize.toString() +
"\n\n Value:\n" +
hexdump(buf, {
offset: 0,
length: bufSize,
header: false,
ansi: false,
}),
);
console.log("");
console.log("----------------------------------------------------");
console.log("");
}
setTimeout(hookFunc, 1000);