Skip to content

Instantly share code, notes, and snippets.

@as0ler
as0ler / gist:426a0a95d91eda2f92a85d5d99d0141f
Created October 27, 2025 13:47
Frida std::string decoder
function readStdString (str) {
const isLong = (capU8) => { return (capU8 & 0x01) !== 1; }
const cap0 = str.readU8();
let data = null;
let size = 0;
if (isLong(cap0)) {
data = str.readPointer().readUtf8String();
size = str.add(Process.pointerSize).readU64();
} else {
size = str.add(23).readU8();
@as0ler
as0ler / thread_suspend.js
Created February 1, 2024 15:28
thread suspend monitoring
const thread_suspend = Module.getExportByName(null, "thread_suspend");
Interceptor.attach(thread_suspend, {
onEnter(args) {
console.log("DEBUG: thread_suspend CALLED" + Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\n') + '\n');
args[0] = NULL;
},
onLeave(retval) {
retval.replace(NULL);
}
});
@as0ler
as0ler / frida-disassemble.js
Created March 8, 2023 13:22
Example of a function to disassemble instructions from memory using Frida
function disasm (from, end) {
let cursor = from;
while (cursor.compare(end) < 0) {
try {
const inst = Instruction.parse(cursor);
console.log(cursor, inst);
} catch (e) {
console.log(cursor, cursor.readU32().toString(16), "invalid");
}
cursor = cursor.add(4);