0
点赞
收藏
分享

微信扫一扫

【PHP】 基础语法,自学笔记(二)

徐一村 2024-11-28 阅读 6
androidc++js

Frida 脚本用于拦截 Android 应用程序中的 dlopenandroid_dlopen_ext 函数。这两个函数用于动态加载共享库,脚本通过拦截这些函数的调用来记录加载的库的路径。

代码分析

var dlopen = Module.findExportByName(null, "dlopen"); // 6.0
var android_dlopen_ext = Module.findExportByName(null, "android_dlopen_ext"); // 高版本8.1以上

Interceptor.attach(dlopen, {
    onEnter: function (args) {
        var path_ptr = args[0];
        var path = ptr(path_ptr).readCString();
        console.log("[dlopen:]", path);
    },
    onLeave: function (retval) {
        // Thread.sleep(3);
    }
});

Interceptor.attach(android_dlopen_ext, {
    onEnter: function (args) {
        var path_ptr = args[0];
        var path = ptr(path_ptr).readCString();
        console.log("[dlopen_ext:]", path);
    },
    onLeave: function (retval) {
        // Thread.sleep(3);
    }
});

1. 关键功能

1.1 dlopenandroid_dlopen_ext
  • dlopen: 这是一个标准的动态链接库加载函数,通常用于加载共享库。
  • android_dlopen_ext: 这是 Android 特有的扩展版本,提供了额外的功能,通常在 Android 8.1 及以上版本中使用。

2. 拦截逻辑

2.1 Interceptor.attach
  • Interceptor.attach: 该方法用于拦截指定函数的调用。它接受两个参数:要拦截的函数地址和一个包含 onEnteronLeave 方法的对象。
2.2 onEnter
  • onEnter: 当被拦截的函数被调用时执行。这里,args[0] 是传递给 dlopenandroid_dlopen_ext 的第一个参数,通常是要加载的库的路径。
  • ptr(path_ptr).readCString(): 读取指针指向的字符串,获取库的路径,并将其打印到控制台。
2.3 onLeave
  • onLeave: 当被拦截的函数返回时执行。这里可以添加额外的逻辑,例如延迟或处理返回值,但当前代码中被注释掉了。

3. 使用方法

要使用这个脚本,需要:

  1. 安装 Frida: 确保您已经在设备上安装了 Frida Server,并且在您的计算机上安装了 Frida 工具。

  2. 运行命令: 使用如下命令运行脚本:

    frida -U -f <your_app_package_name> -l <path_to_your_script.js> -o <output_log_file>
    

    这里 <your_app_package_name> 是您要监控的应用程序包名,<path_to_your_script.js> 是脚本的路径,<output_log_file> 是输出日志文件的路径。

输出例子:

/data/app/~~KVEKJlJur2r6197VML5LRw==/com.shopee.sg-ZyVbLWincySSEAiqQSuPLQ==/split_config.arm64_v8a.apk!/lib/arm64-v8a/libshpssdk.so
举报

相关推荐

0 条评论