ida+qira 记录

作者: Black_Sun | 来源:发表于2017-11-16 16:29 被阅读1279次

    安装qira:

    1.http://qira.me/
    按照以上完账安装步骤安装:即可
    qira1.2年代久远
    使用本人github下载:
    2.使用 geohot的git网站进行安装:
    https://github.com/BinaryAnalysisPlatform/qira

    可能存在的错误:

    1.Flask-SocketIO 2.9.2 存在错误 降低版本即可解决 如下图所示:


    图片.png

    Flask-SocketIO got an update (to 2.9.2) which obviously broke qira. You can simply downgrade this module.
    Here is how I did it:

    source <qira-dir>/venv/bin/activate
    pip uninstall Flask-SocketIO
    pip install Flask-SocketIO==2.9.1
    deactivate
    

    参考网站:
    https://github.com/miguelgrinberg/Flask-SocketIO/blob/v1.0/README.md

    windows安装没有成功:
    存在错误:

    1. Cannot open include file: 'inttypes.h': No such file or directory
      2.如图所示:


      错误1
    C:\Users\>C:\Python27\python.exe middleware/qira.py -s ./stack1
    C:\Users\\qira_webserver.py:41: ExtDeprecationWarning: Importing flask.ext.socketio is deprecated, use flask_socketio instead.
      from flask.ext.socketio import SocketIO, emit
    *** program is C:\Users\qira\stack1 with hash 81d1adbda5c66b08eb76d3c1a43960f529337028
    Traceback (most recent call last):
      File "middleware/qira.py", line 83, in <module>
        program = qira_program.Program(args.binary, args.args, qemu_args)
      File "C:\Users\middleware\qira_program.py", line 56, in __init__
        self.static = static2.Static(self.program)
      File "C:\Usersqira/static2\static2.py", line 108, in __init__
        loader.load_binary(self)
      File "C:\Users\qira\static2\builtin\loader.py", line 84, in load_binary
        for nsym, symbol in enumerate(section.iter_symbols()):
      File "C:\Python27\lib\site-packages\elftools\elf\sections.py", line 124, in iter_symbols
        yield self.get_symbol(i)
      File "C:\Python27\lib\site-packages\elftools\elf\sections.py", line 101, in get_symbol
        stream_pos=entry_offset)
      File "C:\Python27\lib\site-packages\elftools\common\utils.py", line 34, in struct_parse
        raise ELFParseError(str(e))
    elftools.common.exceptions.ELFParseError: expected 4, found 0
    
    

    3.error C2011: 'addrinfo' : 'struct' type redefinition
    4. from _weakref import (
    ImportError: cannot import name '_remove_dead_weakref'

    一定不要更新到最新版 否则,你去找解决办法都没有地方。这里python不能跟新到3.5版本.
    此问题参考网站:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852163
    https://askubuntu.com/questions/907035/importerror-cannot-import-name-remove-dead-weakref
    https://github.com/pyinstaller/pyinstaller/issues/2942

    Traceback (most recent call last):
      File "/usr/lib/python3.5/py_compile.py", line 6, in <module>
        import importlib._bootstrap_external
      File "/usr/lib/python3.5/importlib/__init__.py", line 57, in <module>
        import types
      File "/usr/lib/python3.5/types.py", line 166, in <module>
        import functools as _functools
      File "/usr/lib/python3.5/functools.py", line 23, in <module>
        from weakref import WeakKeyDictionary
      File "/usr/lib/python3.5/weakref.py", line 12, in <module>
        from _weakref import (
    ImportError: cannot import name '_remove_dead_weakref'
    

    解决办法:https://www.questarter.com/q/how-to-install-pip-on-debian-with-python-2-7-27_46560951.html(但是没有什么卵用)

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    本来是想尝试在Linux下装ida,目的是现在同一个系统平台下,将ida和qira最大限度的一起使用。
    说下本人的安装过程和问题:
    1.ida的Linux版本很少,我在网上只找到了ida6.4版本,这里面的qira_linux版本插件不能使用。

    错误信息
    插件

    这里我猜测:如果找到ida6.6以上的版本,可能能够使用。

    其它:

    示例

    1:表示分支(每执行一次就可以产生一个分支,方便运算)
    2:内存布局(类似于ida的概况导航栏)
    3:控制窗口吧。(你可以在这里输入你想找的任何地址。)
    4:反汇编窗口
    5:寄存器窗口
    6:change list(这个不知道怎么解释,猜测:指令执行的变化状态)
    7:strace
    8:内存映射
    蓝色:change list的标号
    灰色:表示分支变化的数字
    红色:表示指令地址(iaddr)
    暗黄色:表示数据存储的地址(daddr)
    在分支窗口上:颜色越深表示函数的深度(表示第几层的函数)
    移动蓝色的指令,在分支视图中,你能够看到蓝色点。
    红色是通过iaddr的点?????(你在调试的时候,来回已经翻动过的红色代码)
    亮黄色是写入daddr里的点????
    暗黄色是读取daddr的点????
    内存映射区的蓝色光标:表示栈基址
    内存映射区的红色光标:表示栈顶指针

    qira 介绍:
    1.被称为永恒的调试器,没有时间限制。
    2.qira使用动态调试的方法,但是他可以像静态调试一样,任意查看上下文代码。
    3.qira可以记录整个运行的的过程,这使的我们调试过程变得更加简单。
    qira的作用:

    1. 进行正常调试
    2. 调试时如果发现内存不如所料,可以返回到之前的状态进行内存状态查看
      这一点使得我们可以避免很多反复启动的工作,使得开发expoit更加简单
    $ ./qira --help
    usage: qira.py [-h] [-s] [-t] [--gate-trace ADDRESS] [--flush-cache] [--pin]
                   [--host HOST] [--web-port PORT] [--socat-port PORT] [-S]
                   [--engine ENGINE]
                   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  don't 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
      --engine ENGINE       static engine to use with static2 (builtin or r2)#这个没理解
    
    

    两个插件:

    ./fetchlibs.sh will fetch the libraries for i386, armhf, armel, aarch64, mips, mipsel, and ppc
    
    ./tracers/pin_build.sh will install the QIRA PIN plugin, allowing --pin to work
    

    在kali下安装 pin_build.sh ,报如下错误:


    无法定位软件包g++-4.9

    采用的解决办法是:

    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    

    先注释掉原来的kali源,找到一个Ubuntu16.04 的清华源,进行更新。
    `

    sudo apt-get update

    最后执行:
    sudo ./pin_build.sh

    `
    安装成功。

    • 若报以下错误:


      路径问题

      然后使用如下命令:

     ./tracers/pin_build.sh 
    

    注意这里不要使用:
    sudo ./pin_build.sh

    pin成功

    快捷键:

    j -- next invocation of instruction#下一条调用的指令(你选中的指令,下一条出现的地方)
    k -- prev invocation of instruction#下一条调用的指令
    
    shift-j -- next toucher of data (下一个触发的数据)(你所选中的下一跳出现的数据)
    shift-k -- prev toucher of data( 前一个触发的数据)
    
    m -- go to return from current function#到调用函数的返回位置
    , -- go to start of current function#到#到函数的开始的位置
    
    z -- zoom out max on vtimeline
    
    left  -- -1 fork 有多个调试程序的分支(可以左右移动对比分支)
    right -- +1 fork(对比分支想右移动)
    up    -- -1 clnum(向上移动指令)---移动的是蓝色的数字序列号
    down  -- +1 clnum(向下移动指令)
    
    esc -- back(返回)
    
    shift-c -- clear all forks(清除所有的分支)
    
    n -- rename instruction(给指令重命名)
    shift-n -- rename data(给数据重命名)---这个的功能包含了上一条,刚觉没什么用。
    : -- add comment at instruction(直接跳转到你想要的命令)
    shift-: -- add comment at data
    
    g -- go to change, address, or name
    space -- toggle flat/function view
    
    p -- analyze function at iaddr (使用-Ss 左下角的框里.用来分析16进制字符结构体,具体实现的什么功能)
    c -- make code at iaddr, one instruction(分析16进制字符结构体,看看它实现的是什么指令)
    a -- make ascii at iaddr (把一个 iaddr内容变成 ascii (这个不知道是干什么))
    d -- make data at iaddr(把 iaddr内容换成数据)(变换只有使用-Ss 左下角的框里才能看见)
    u -- make undefined at iaddr(把 iaddr内容换成为未定义的数字,同样也只能在左下角的框里能看见)
    

    Session state

    clnum -- selected changelist number
    forknum -- selected fork number
    iaddr -- selected instruction address
    daddr -- selected data address
    
    cview -- viewed changelists in the vtimeline
    dview -- viewed window into data in the hexeditor
    iview -- viewed address in the static view
    
    max_clnum -- max changelist number for each fork
    dirtyiaddr -- whether we should update the clnum based on the iaddr or not
    flat -- if we are in flat view
    

    qira+ida:
    qira没有静态调试,但是我们使用ida的插件,就对静态分析有一个很好的补充。也可以说是互相补充。

    在qira的插件里有以下两个文件:

    插件).png

    我们将(qira_ida66_windows.p64,qira_ida66_windows.plw)放入ida的插件文件夹里。

    ida +qira

    注意:我们启动qira的时候,同时让ida加载所调试的程序,这样我们就能同时,并且联动的调试程序。

    2014年的CTF上Geohot搭配使用Qira,在45分鐘內解決了HITCON團隊在3天都破解不了的難題。資安專家Husky表示,Qira的目的為加速除錯程序,因為傳統的工具如GDB,雖然亦可以用於CTF競賽,但是在速度上卻不及Qira

    相关为解决问题:

    pin问题
    链接问题:https://github.com/geohot/qira/pull/23 差异问题
    链接:https://github.com/geohot/qira/commit/0c584f7fbbc9c7db360a8095f606368810eedd1a

    ????????????????????????????????????????????????????????????
    这个网站很有意思(学习用):
    http://www.voidcn.com/article/p-sjicdsjy-wy.html

    qira 安装:https://www.techbliss.org/threads/qira.547/
    https://libraries.io/github/UNwS/qira
    qira交流网站:
    https://gitter.im/BinaryAnalysisPlatform/qira/
    另外一个qira开发网站:
    https://github.com/Escapingbug/qira/
    qira相关问题交流解决网站:
    https://github.com/BinaryAnalysisPlatform/qira/issues
    https://news.ycombinator.com/item?id=11000312

    用IDA Pro处理Qira(韩国人写的):
    http://namdaehyeon.tistory.com/111
    (日本人写的)
    http://inaz2.hatenablog.com/entry/2016/03/17/230906
    qira简介(做ppt可以用到):
    http://gnu-cse.tistory.com/20
    http://tribal1012.tistory.com/85

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Ubuntu安装ida pro:
    http://blog.csdn.net/pl19920614/article/details/56282996
    http://www.cnblogs.com/ryuasuka/p/5493371.html
    ida下载网站:
    https://down.52pojie.cn/Tools/Disassemblers/
    逆向所使用的工具:
    https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=4&filter=typeid&typeid=123

    相关文章

      网友评论

        本文标题:ida+qira 记录

        本文链接:https://www.haomeiwen.com/subject/szrsmxtx.html