简介
一个超时空调试器,记录了一个程序从开始到结束时候的过程,调试者可以反复查看每个寄存器或者内存里内容的变化,而不用因为不小心调试过头了而忧伤
Install
需要使用Linux,官方推荐Ubuntu,一开始装在kali上,各种报错,迫不得已,装了一个Ubuntu 16.04,直接成功,这里记录一下自己安装成功的过程
sudo apt-get update sudo apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential sudo pip install --upgrade pip sudo pip install --upgrade pwntools pip install --upgrade setuptools sudo apt-get install gcc gdb git clone https://github.com/longld/peda.git mv peda ~/.peda echo "source ~/.peda/peda.py" >> ~/.gdbinit cd ~/ git clone https://github.com/BinaryAnalysisPlatform/qira.git cd qira/ ./install.sh sudo apt-get install libc6-dev-i386
Usage
usage: qira.py [-h] [-s] [-t] [--gate-trace ADDRESS] [--flush-cache] [--pin]
[--host HOST] [--web-port PORT] [--socat-port PORT] [-S]
binary [args [args ...]]
Analyze binary. Like "qira /bin/ls /"
positional arguments:
binary path to the binary
args arguments to the binary
optional arguments:
-h, --help show this help message and exit
-s, --server bind on port 4000. like socat
-t, --tracelibraries trace into all libraries
--gate-trace ADDRESS do not start tracing until this address is hit
--flush-cache flush all QIRA caches
--pin use pin as the backend, requires ./pin_build.sh
--host HOST listen address for web interface and socat. 0.0.0.0 by
default
--web-port PORT listen port for web interface. 3002 by default
--socat-port PORT listen port for socat. 4000 by default
-S, --static enable static2
pwntools
当程序所需要输入的数据不是很复杂的情况下,可以使用nc hostname 4000连接输入即可,如果需要输入的很复杂,这时候我们就可以使用pwntools来构造exp,这里就不介绍用法了
qira图例
启动qira,创建socket,等待连接
连接,及启动了程序,这里的程序没有输入输出
第一个框表示当前eip所在的行数
第二个框,没弄明白,只知道不为0时,鼠标滚动界面是不动的,有了解的老哥,烦请告知缘由
第三个框表示当前eip的地址
第四个框表示当前的内存地址,也就是最底下的那个框
总结
安装方法不难,都被大佬们给优化好了,就是平台适应性不太友好,主要还是自己太菜了
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!