
Ejemplos artesanales de Frida
& también ejemplos de salida
Transacciones BinderObtener propiedad del sistemaRevelar símbolos nativos registrados manualmenteEnumerar clases cargadasDescripción de claseApagar WiFiEstablecer proxyObtener IMEIHook io InputStreamAndroid hacer ToastEsperar a que se cargue un módulo específicoURLs de WebViewImprimir todos los strings runtime y stacktraceImprimir actualizaciones de preferencias compartidasComparación de stringsHook JNI por direcciónHook constructorHook reflexión de JavaTrazar claseHooking Unity3dObtener Android IDCambiar ubicaciónBypass FLAG_SECUREActualizar preferencias compartidasHookear todas las sobrecargas de métodoRegistrar receptor de broadcastAumentar contador de pasosListar clases que implementan interfaz con class loaders$ frida --codeshare FrenchYeti/android-file-system-access-hook -f com.example.app --no-pausenull a la propiedad implementation.
{
"scope": "source.js",
"completions": [
{"trigger": "fridainterceptor", "contents": "Interceptor.attach(\n ptr,\n {\n onEnter:function(args) {\n\n },\n onLeave: function(retval) {\n\n }\n }\n)"},
{"trigger": "fridaperform", "contents": "function main(){\n console.log('main()');\n}\n\nconsole.log('script loaded');\nJava.perform(main);"},
{"trigger": "fridause", "contents": "var kls = Java.use('kls');"},
{"trigger": "fridahex", "contents": "hexdump(\n ptr,\n {\n offset: 0,\n length: ptr_size\n }\n);" },
{"trigger": "fridabacktrace", "contents": "console.log('called from:\\n' +\n Thread.backtrace(this.context, Backtracer.ACCURATE)\n .map(DebugSymbol.fromAddress).join('\\n') + '\\n'\n);"},
{"trigger": "fridamods", "contents": "var mods = Process.enumerateModules().filter(function(mod){\n return mod.name.includes(\"<name>\");\n});"},
{"trigger": "fridaexport", "contents": "Module.findExportByName(null, \"<export_name>\");"},
{"trigger": "fridabase", "contents": "Module.findBaseAddress(name);"},
{"trigger": "fridaoverload", "contents": "kls.method_name.overload().implementation=function(){}"}
]
}
Para listar abreviaciones :ab
Expande escribiendo key y <Space>
</details>
<details>
<summary>JEB</summary>
Generador de hooks de métodos Java mediante atajo de teclado
1. `curl -o ~/$JEB$/scripts/FridaCodeGenerator.py https://raw.githubusercontent.com/iddoeldor/frida-snippets/master/scripts/FridaCodeGenerator.py`
2. Coloca el cursor en la firma del método Java
3. Presiona `Ctrl+Shift+Z`
4. El código se copia al portapapeles del sistema (usando `xclip`)
</details>
<hr />
#### Obtener claves SSL```js
var keylog_callback = new NativeCallback((ssl, line) => {
send(Memory.readCString(line));
}, 'void', ['pointer', 'pointer']);
if (ObjC.available) {
var CALLBACK_OFFSET = 0x2A8
if (Memory.readDouble(Module.findExportByName('CoreFoundation', 'kCFCoreFoundationVersionNumber')) >= 1751.108) {
CALLBACK_OFFSET = 0x2B8
}
Interceptor.attach(Module.findExportByName('libboringssl.dylib', 'SSL_CTX_set_info_callback'), {
onEnter(args) {
ptr(args[0]).add(CALLBACK_OFFSET).writePointer(keylog_callback)
}
})
} else if (Java.available) {
var set_keylog_callback = new NativeFunction(Module.findExportByName('libssl.so', 'SSL_CTX_set_keylog_callback'), 'void', ['pointer', 'pointer']);
Interceptor.attach(Module.findExportByName('libssl.so', 'SSL_CTX_new'), {
onLeave(retval) {
set_keylog_callback(retval, keylog_callback)
}
})
}
#include #include
extern "C" { void* create_stdstr(char data, int size) { std::string s = new std::string(); (*s).assign(data, size); return s; } }
- `-w` habilita el ajuste de línea para una mejor legibilidad```sh
$ ./android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++ a.cpp -o a -shared -static-libstdc++ && adb push a /data/local/tmp/a