将代码注入 JNI 函数(Android 共享库)

逆向工程 安卓 手臂 共享对象
2021-06-25 21:22:21

一个 Android 应用程序.so使用System.loadLibrary. 然后它调用一个特定的函数,它接受 3 个输入变量,并返回一个包含 MD5 哈希的字符串。

您可以在下面看到该函数的相关部分:

在此处输入图片说明

我希望能够看到原始的“未散列”消息(这当然来自 3 个输入变量),而不是 md5 散列。这有可能吗?

1个回答

您可以使用弗里达

Frida 是一个动态二进制检测工具,允许您使用 JavaScript 调试逻辑拦截、跟踪、修改...正在运行的应用程序。

出于您的目的,您需要MD5_Update使用InterceptorAPI挂钩该函数

JavaScript 代码可能如下所示。[警告:未经测试]

// Use the mangled form of name MD5_Update below
Interceptor.attach(Module.findExportByName("mylib.so", "MD5_Update"), {
    onEnter: function (args) 
    {
        var ptr_data = args[1];
        var length = args[2];    

        var data = Memory.readByteArray(ptr_data, length);
        console.log(data);
    }
});

进一步参考: