邢台网站优化/百度网站优化培训
文章目录
- 导读
- 安装
- 实战
- 一、枚举进程模块
- 二、frida-trace直接hook函数recv*
- 三、hook Qt应用程序打印日志
- 总结
- 参考资料
导读
frida是Greasemonkey公司(该公司的网红产品网络神器油猴子,可以通过“油猴脚本”,自由定制网页,实现你想要的各种功能)开发的一款
跨平台
逆向全家桶动态代码检测
工具。
它允许您将JavaScript或您自己的库的片段注入Windows,macOS,GNU / Linux,iOS,Android和QNX上的原生应用程序。 Frida还为您提供了一些基于Frida API构建的简单工具。 这些可以根据您的需要进行调整,或被作为使用API的示例。
安装
- 安装最新版本的Python3.x,本教程使用的是Python3.7.1的64位版本(再之前的版本的确会有问题)。
- 执行指令pip install frida-tools安装即可。
frida安装后Scripts目录内容如下:
实战
一、枚举进程模块
- 打开notepad.exe。(注意:32位和64位都可以的,frida考虑的还挺全的)
- 下面脚本保存为enumerate_modules.py,并执行命令
python enumerate_modules.py
:
import fridadef on_message(message, data):print("[on_message] message:", message, "data:", data)session = frida.attach("notepad.exe")script = session.create_script("""'use strict';rpc.exports.enumerateModules = function () {return Process.enumerateModulesSync();};""")script.on("message", on_message)script.load()print([m["name"] for m in script.exports.enumerate_modules()])
- 运行结果如下所示:
['NOTEPAD.EXE', 'ntdll.dll', 'kernel32.dll', ......]
二、frida-trace直接hook函数recv*
frida-trace是一个动态跟踪函数调用的工具。官网使用twitter程序作为目标程序,国内无法使用,所以我们这里使用python作为目标进程(python程序调用urllib来模拟发包),具体操作如下:
- 打开python.exe,查看进程id为16196。
- 执行命令frida-trace -i “recv*” 16196。
- 在python.exe中一次输入import urllib和f = urllib.urlopen(‘https://baidu.com’)
- 执行结果如下图所示:
我们可以看到frida-trace在目录/__handlers__/WS2_32.dll
下创建了recv.js和recvfrom.js文件,frida-trace也实现了hook函数recv的功能。
三、hook Qt应用程序打印日志
ps:Qt程序如果不熟悉的,可以不考虑Qt打印日志函数的调用关系。
我们编写个Qt程序,其中点击按钮触发循环打印数字的逻辑。如下面的代码,其使用的是qDebug宏,宏展开是QMessageLogger的一个类,再查看QMessageLogger可以发现内部最终调用了QTextStream类的各种重载操作符<<。
#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debugvoid MainWindow::on_pushButton_clicked(){qDebug() << 9999;for(int i = 0; i < 10; ++i){qDebug() << i;}}
查看Qt5Core.dll导出函数,查找QTextStream系列函数,通过demumble解析gcc编译的C++函数,我们发现_ZN11QTextStreamlsEi就是我们要找的函数QTextStream::operator<<(int)。
启动测试程序Demo.exe。执行命令****frida-trace -i “_ZN11QTextStreamlsEi” Demo.exe**。点击Button按钮,触发函数调用,最终打印出如下内容:
总结
方便快捷
:frida纯脚本实现hook等操作,免去了编译的问题。自动分析
:frida自动分析可执行文件内容,分析关键api很方便。支持通配符
:frida可以一次执行多个函数hook。工具丰富
:frida全家桶拥有多个工具,如frida-trace等,让分析工作更方便了。
参考资料
- 官网安装教程
- 官网快速入门教程
- 官网frida-trace介绍
- qq群:夜猫逐梦技术交流裙/953949723
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。