Dwarf:基于PyQt5和frida的强大全功能arch/os逆向工程调试器

Dwarf介绍

Dwarf是一个逆向工程调试器,建立在各种框架和逻辑之上。一开始,它只是一个实验,主要在Android上运行而设计的,但随着发展,由于它们共享同一个核心,因此可以轻松添加对iOS的支持。如今,主要得益于社区的努力以及开源是道路(当然还有frida的力量),Dwarf可以在任何操作系统上调试逆向工程(感谢PyQt的)。类似的还有有radare2等。

Dwarf:基于PyQt5和frida的强大全功能arch/os逆向工程调试器
Dwarf界面

功能

  • Android应用程序存储和反编译
  • 与用户界面交换数据的API
  • 回溯
  • 断点solib初始化(android)
  • 社区中准备在运行时注入的脚本集合
  • 用汇编补丁程序分解视图
  • 带步骤的仿真器,动态映射范围从目标和第一个操作数突出显示
  • 导出、导入、符号、范围
  • 用通配符查找符号和字节
  • HAX0R用户界面
  • 带字节/字符串修补程序、指针跳转、快速断点等的十六进制视图。
  • 带frida更新程序和远程启动/停止的应用内更新程序
  • JVM资源管理器/ Java端调试(Android)
  • 接受frida和dwarf API的javascript代码注入器
  • 接受frida和dwarf API的javascript控制台
  • 内核支持(DWARF LKM)
  • 单个断点逻辑和条件
  • 内存转储和检查器
  • 用于读写访问的内存观察程序
  • python控制台
  • 具有递归值的寄存器
  • 单线程断点
  • 单线程Java断点(Android)
  • 单线程跟踪
  • 在多个线程之间切换
  • 更多
  • 所有这些都可以通过脚本来完成,以构建自定义调试逻辑

Dwarf安装

依赖

全局frida服务

ANDROID会话

  • 确保您可以在控制台中使用'adb'命令或在此处阅读
  • 设备/模拟器上的root是必需的!
  • 确保frida在/system/bin中xbin具有+ x权限或最终使用Dwarf自动安装最新的frida服务器

下载并运行

git clone https://github.com/iGio90/Dwarf
cd Dwarf
pip3 install -r requirements.txt
python3 dwarf.py

可选

您可以安装keystone-engine来启用汇编程序:

Windows
x86: https://github.com/keystone-engine/keystone/releases/download/0.9.1/keystone-0.9.1-python-win32.msi
x64: https://github.com/keystone-engine/keystone/releases/download/0.9.1/keystone-0.9.1-python-win64.msi

OSX / Unix
pip3 install keystone-engine

dex2jar工具(baksmali /反编译所需)

Guide: https://sourceforge.net/p/dex2jar/wiki/UserGuide/
Files: https://github.com/pxb1988/dex2jar/releases

On Windows add d2j folder to %PATH% and change:
'java -Xms512m -Xmx1024m -cp "%CP%" %*'
in d2j_invoke.bat to
'java -Xms512m -Xmx4096m -cp "%CP%" %*'

设置

你可以改变.dwarf

"dwarf_ui_hexedit_bpl": 32 (default: 16) - Bytes per line in hexview
"dwarf_ui_hexstyle": "upper", "lower" (default: "upper") - overall hexstyle 0xabcdef or 0xABCDEF (note: click on the "Offset (X)" in hexview to change)
"dwarf_ui_font_size": 12 (default: 12) - (note: hexview/disasm use other font wait for settingsdlg or change lib/utils.py get_os_monospace_font())