简介

一个超时空调试器,记录了一个程序从开始到结束时候的过程,调试者可以反复查看每个寄存器或者内存里内容的变化,而不用因为不小心调试过头了而忧伤

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的地址

第四个框表示当前的内存地址,也就是最底下的那个框

总结

安装方法不难,都被大佬们给优化好了,就是平台适应性不太友好,主要还是自己太菜了



misc      qira usage

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!