BAP python bindings
Install python bindings with pip (after you have installed bap):
$ pip install bapAlternatively you can just copy paste files into your project, or clone it with git-subtree.
An optional low-level interface, called [rpc] depends on the requests library and the bap-server package. To use it, you need to install them from pip and opam correspondigly:
$ pip install bap[rpc]
$ opam install bap-serverYou can also install directly from github:
pip install git+git://github.com/BinaryAnalysisPlatform/bap-python.git>>>importbap>>>proj=bap.run('/bin/true')
>>>main=proj.program.subs.find('main')
>>>entry=main.blks[0]
>>>next=main.blks.find(entry.jmps[0].target.arg)For more information, read builtin documentation, for example with
ipython:
>>>bap?The low-level interface provides an access to disassembler and image
loader. It uses RPC interface to make calls to the library. So make
sure that you have installed requests and bap-server (see
Installation section).
>>>importbap>>>print'\n'.join(insn.asmforinsninbap.disasm(b"\x48\x83\xec\x08"))
decl%eaxsubl $0x8, %espA more complex example:
>>>img=bap.image('coreutils_O0_ls')
>>>sym=img.get_symbol('main')
>>>print'\n'.join(insn.asmforinsninbap.disasm(sym))
push {r11, lr}
addr11, sp, #0x4subsp, sp, #0xc8
... <snip> ...