当前位置: 首页 > news >正文

frida_hook_dlopen(当年到lib目录下找发现一个so都没有,hook下dlopen)

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
http://www.lryc.cn/news/492540.html

相关文章:

  • Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录
  • WordCloud去掉停用词(fit_words+generate)的2种用法
  • Python 中如何处理异常?
  • C++——多态(下)
  • qsort函数详解+代码展示
  • leetcode hot100【LeetCode 136. 只出现一次的数字】java实现
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
  • 对抗攻击算法:FGSM和PGD
  • 【八股文】小米
  • xtu oj 众数
  • ENVI计算ROI分离度为灰色compute roi separability
  • Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测
  • Python学习第十三天--面向对象,类和对象
  • AI运用落地思考:如何用AI进行系统运维?
  • springboot学习-分页/排序/多表查询的例子
  • windows 应用 UI 自动化实战
  • ffmpeg命令详解
  • 【漏洞复现】CVE-2022-43396
  • 文件的摘要算法(md5、sm3、sha256、crc)
  • 如何借助AI生成PPT,让创作轻松又高效
  • 云技术-docker
  • 对docker安装的mysql实现主从同步
  • 【不定长滑动窗口】【灵神题单】【刷题笔记】
  • AI写论文指令
  • 2625扁平化嵌套数组
  • QT6学习第五天 第一个QT Quick程序
  • 【开发商城系统】
  • (11)(2.2) BLHeli32 and BLHeli_S ESCs(二)
  • C++ 11重点总结1
  • 海康VsionMaster学习笔记(学习工具+思路)