From b3e40c2b575895220a724d12a39e703ee3402d99 Mon Sep 17 00:00:00 2001 From: iddoeldor Date: Sun, 21 Jun 2020 17:31:36 +0300 Subject: [PATCH] load c module with log --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cde5cf..0c3dab7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@
Native -* [`Load C++ module`](#load-cpp-module) +* [`Load C/C++ module`](#load-cpp-module) * [`One time watchpoint`](#one-time-watchpoint) * [`Socket activity`](#socket-activity) * [`Intercept open`](#intercept-open) @@ -148,6 +148,43 @@ function readStdString(str) { "abc" ``` +#### Load C module + +* https://frida.re/docs/javascript-api/#cmodule +* https://frida.re/news/2019/09/18/frida-12-7-released/ + + +```sh +$ ./aarch64-linux-android21-clang /tmp/b.c -o /tmp/a -shared ../sysroot/usr/lib/aarch64-linux-android/21/liblog.so && adb push /tmp/a /data/local/tmp/a +``` + +```c +#include +#include +#include + +#define TAG "TEST1" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__) + +void test(void) { + FILE* fp = popen("ls -l /proc/self/fd 2>&1", "r"); + if (fp == NULL) + LOGE("executing cmd failed"); + char b[256]; + while (fgets(b, sizeof(b), fp) != NULL) { + LOGI("%s", b); + } + pclose(fp); +} + +``` + +```sh +$ frida -Uf com.app --no-pause --enable-jit -e "Module.load('/data/local/tmp/a')" +[ ] -> new NativeFunction(Module.findExportByName('a', 'test'), 'void', [])() +``` +
[⬆ Back to top](#table-of-contents)