Dwarf:一款基于Pyqt5和Frida的逆向分析调试工具

2019-09-05 45636人围观 ,发现 3 个不明物体 工具

今天给大家介绍的是一款名叫Dwarf的逆向分析调试工具,该工具基于Pyqt5和Frida实现,专为逆向工程师、安全破解人员和安全分析专家设计。

Dwarf

Dwarf本质上是一款调试器,这个项目起初知识想使用PyQt来给Frida增加一个有好的UI界面,并且主要用于Android端。但是通过开发人员的努力之后,该工具已经支持iOS端了。目前,得益于整个社区的共同努力,该工具已完全开源,并且支持对任何类型的操作系统进行分析,并运行在任意桌面端操作系统。

功能介绍

多系统多平台支持

Dwarf基于PyQt5实现,可以直接在任何支持Python的操作系统上运行,并且使用了Frida作为后端,功能得到了稳定保证。

动态分析

允许执行动态指令,我们的Frida代理会在目标系统中加载,并允许我们设置断点。除此之外,它还可以终端模块构造器来帮助我们构造初始化函数。而且跟踪器、寄存器和其他功能模块可以帮助我们降低逆向分析的调试难度。

静态分析

我们构建了多种功能插件来扩展Dwarf的功能,它们可以帮助我们快速完成后端模块分析以及模拟。而且还提供了一套工具集和两个控制台接口来接收JavaScript以及Python脚本。

自动化

很多研究人员在调试和分析的过程中,都会想要让很多任务完成得快一点,尤其是那些重复性工作,Dwarf就可以帮助大家加速这个过程。

可以生成大量命令行参数并将它们注入到目标代理中,例如:

python3 dwarf.py -t android -sp -p com.android.target -s myagent.js

提供了JavaScript API来添加钩子和断点。

提供了API来控制目标程序。

可扩展

Dwarf内置的插件系统允许我们注入PyQt小工具,并通过多个Dwarf代码Python API来与目标设备进行交互。插件还允许我们注入自定义Frida代理来扩展或创建新的JavaScript API。

工具安装

工具要求

1、Frida服务器;

2、Python 3;

安装与运行:

git clone https://github.com/iGio90/Dwarf

cd Dwarf

pip3 install -r requirements.txt

python3 dwarf.py

可选项

你还可以通过下列方式安装Dwarf:

sudo python3 setup.py install

然后运行下列命令即可使用工具:

dwarf /bin/man open

dwarf -t android -s myagent.js -sp com.target

工具配置

我们可以将下列代码拷贝至.dwarf中:

"dwarf_ui_hexedit_bpl":32 (default: 16) - Bytes per line in hexview

"dwarf_ui_hexstyle":"upper", "lower" (default: "upper") - overallhexstyle 0xabcdef or 0xABCDEF (note: click on the "Offset (X)" inhexview to change)

"dwarf_ui_font_size":12 (default: 12) - (note: hexview/disasm use other font wait for settingsdlg orchange lib/utils.py get_os_monospace_font())

工具运行截图

项目地址

Dwarf:【GitHub传送门

* 参考来源:iGio90,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

发表评论

已有 3 条评论

  • 马化腾  2019-09-05 回复 1楼

    我非常看好这款产品,这是一个跨世纪的伟大的产品。

  • xwbk12  2019-09-06 回复 3楼

    [root@HN1C-03-00-25101 Dwarf]# pip3 install -r requirements.txt
    Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
    Requirement already satisfied: capstone>=4.0.1 in /usr/local/lib/python3.6/site-packages (from -r requirements.txt (line 1)) (4.0.1)
    Requirement already satisfied: requests>=2.22.0 in /usr/local/lib/python3.6/site-packages (from -r requirements.txt (line 2)) (2.22.0)
    Requirement already satisfied: frida>=12.6.11 in /usr/local/lib64/python3.6/site-packages (from -r requirements.txt (line 3)) (12.6.23)
    Requirement already satisfied: PyQt5>=5.11.3 in /usr/local/lib64/python3.6/site-packages (from -r requirements.txt (line 4)) (5.13.0)
    Requirement already satisfied: pyperclip>=1.7.0 in /usr/local/lib/python3.6/site-packages (from -r requirements.txt (line 5)) (1.7.0)
    Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/site-packages (from requests>=2.22.0->-r requirements.txt (line 2)) (1.24.2)
    Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/site-packages (from requests>=2.22.0->-r requirements.txt (line 2)) (3.0.4)
    Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python3.6/site-packages (from requests>=2.22.0->-r requirements.txt (line 2)) (2.8)
    Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/site-packages (from requests>=2.22.0->-r requirements.txt (line 2)) (2019.3.9)
    Requirement already satisfied: PyQt5_sip<13,>=4.19.14 in /usr/local/lib64/python3.6/site-packages (from PyQt5>=5.11.3->-r requirements.txt (line 4)) (4.19.18)
    [root@HN1C-03-00-25101 Dwarf]# python36 dwarf.py
    Traceback (most recent call last):
    File "dwarf.py", line 22, in <module>
    run_dwarf()
    File "/data/soft/Dwarf/dwarf/dwarf.py", line 140, in run_dwarf
    from dwarf.lib import utils
    File "/data/soft/Dwarf/dwarf/lib/utils.py", line 25, in <module>
    from PyQt5.QtGui import QPixmap, QFont
    ImportError: libGL.so.1: cannot open shared object file: No such file or directory
    [root@HN1C-03-00-25101 Dwarf]# ls
    dwarf dwarf.py examples LICENSE PLUGINS.md README.md requirements.txt setup.py shortcuts.txt

取消
Loading...

特别推荐

推荐关注

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php