Go to file
George Hotz ade5599f35 wrote horrible hack for the PLT problem 2015-03-21 13:42:49 -07:00
extra more website should actually view before commit 2014-11-19 22:27:59 +00:00
ida Make python plugin compatible with chrome 2014-11-03 18:56:59 +01:00
middleware Fixed bug where memory mapped regions would be incorrect when mapped with mmap2() 2015-03-19 17:21:24 -04:00
pin wait i think i got it 2014-09-24 21:02:07 -04:00
qemu_mods move thumb flag to front of log 2014-09-19 17:37:12 -04:00
qira_tests it's time for static to be on by default 2015-03-16 21:44:09 -07:00
qiradb fix the qiradb to memcommit loads 2014-09-23 19:13:15 -04:00
releases better quality v1.1 2014-09-13 17:03:43 +00:00
static2 wrote horrible hack for the PLT problem 2015-03-21 13:42:49 -07:00
tests_auto add code for struct stuff and fix resize bug 2015-03-18 14:10:00 -07:00
tests_manual wrote horrible hack for the PLT problem 2015-03-21 13:42:49 -07:00
web add code for struct stuff and fix resize bug 2015-03-18 14:10:00 -07:00
.gitignore added missing apt to install, readme, gitignore 2015-02-16 20:16:42 +00:00
.travis.yml in a virtualenv 2014-11-23 01:14:20 +00:00
README.md better markdown 2015-02-22 14:32:26 -08:00
VERSION package this as version 0.6 instead 2014-07-28 22:54:19 -07:00
bdistrib.sh make flat bigger 2014-11-23 08:15:31 +00:00
fetchlibs.sh ship aarch64 with v0.8 even though it's super broken 2014-08-18 11:35:18 -07:00
install.bat attempting to make qira work on windows 2014-08-05 21:25:41 +00:00
install.sh it's time for static to be on by default 2015-03-16 21:44:09 -07:00
pin_build.sh fedora, yo 2014-09-23 19:42:43 -04:00
qemu_build.sh fixed mips configure option 2014-09-29 13:21:02 -04:00
qira Set OPAM environment at startup 2015-03-21 10:21:26 -07:00
qira.bat the server wants to work 2014-08-05 17:07:55 -07:00
requirements.txt removed capstone build 2015-02-22 14:02:57 -08:00
run_tests.sh Add BAP as backend. 2015-01-29 09:21:05 -05:00

README.md

QIRA

Build Status

  • QIRA is a competitor to strace and gdb
  • See http://qira.me/ for high level usage information
  • All QIRA code is released under GPLv2 or BSD
  • Other code in this repo released under it's respective license

Installing release

See instructions on qira.me to install 1.0, the most stable version of QIRA

Installing trunk

cd ~/
git clone https://github.com/BinaryAnalysisPlatform/qira.git
cd qira/
./install.sh

Installation Extras

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

Releases

  • v1.1 -- Support for names and comments. Static stuff added. Register colors.
  • v1.0 -- Perf is good! Tons of bugfixes. Quality software. http://qira.me/
  • v0.9 -- Function indentation. haddrline added(look familiar?). Register highlighting in hexdump.
  • v0.8 -- Intel syntax! Shipping CDA(cda a.out) and experimental PIN backend. Bugfixes. Windows support?
  • v0.7 -- DWARF support. Builds QEMU if distributed binaries don't work. Windows IDA plugin.
  • v0.6 -- Added changes before webforking. Highlight strace addresses. Default on analysis.
  • v0.5 -- Fixed regression in C++ database causing wrong values. Added PowerPC support. Added "A" button.
  • v0.4 -- Using 50x faster C++ database. strace support. argv and envp are there.
  • v0.3 -- Built in socat, multiple traces, forks(experimental). Somewhat working x86-64 and ARM support
  • v0.2 -- Removed dependency on mongodb, much faster. IDA plugin fixes, Mac version.
  • v0.1 -- Initial release

UI

At the top, you have 4 boxes, called the controls.
  Blue = change number, Grey = fork number
  Red = instruction address(iaddr), Yellow = data address(daddr)

On the left you have the vtimeline, this is the full trace of the program.
  The top is the start of the program, the bottom is the end/current state.
  More green = deeper into a function.
  The currently selected change is blue, red is every passthrough of the current iaddr
  Bright yellow is a write to the daddr, dark yellow is a read from the daddr.
  This color scheme is followed everywhere

Below the controls, you have the idump, showing instructions near the current change
Under that is the regviewer, datachanges, hexeditor, and strace, all self explanatory.

Mouse Actions

Click on vtimeline to navigate around. Right click forks to delete them. Click on data(or doubleclick if highlightable) to follow in data. Right click on instruction address to follow in instruction.

Keyboard Shortcuts in web/client/controls.js

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

l -- set iaddr to instruction at current clnum

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
c -- make code at iaddr, one instruction
a -- make ascii at iaddr
d -- make data at iaddr
u -- make undefined at iaddr

Installation on Windows (experimental)

  • Install git and python 2.7.9
  • Run install.bat

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