Yet anohter radare2 python bindings.
Project description
r2libr
Yet another radare2 python bindings.
Compared to radare2-bindings and radare2-r2pipe, this binding:
- Doesn't need any extra installation of radare2. Just
pip install
and you are ready to go. - Gives you the full control of the core radare2 libr API and helps build your own tools.
Install
pip3 install --upgrade r2libr
No need to install radare2 since all dynamic libraries are bundled with the Python wheels.
Example
Implement a basic command line r2 by r2libr.
import libr
import ctypes
import argparse
class R2:
def __init__(self, binary):
binary = binary.encode("utf-8")
self._r2c = libr.r_core.r_core_new()
fh = libr.r_core.r_core_file_open(self._r2c, ctypes.create_string_buffer(binary), 0b101, 0)
libr.r_core.r_core_bin_load(self._r2c, ctypes.create_string_buffer(binary), (1<<64) - 1)
def cmd(self, cmd):
r = libr.r_core.r_core_cmd_str(self._r2c, ctypes.create_string_buffer(cmd.encode("utf-8")))
return ctypes.string_at(r).decode('utf-8')
def __del__(self):
libr.r_core.r_core_free(self._r2c)
if __name__ == "__main__":
ap = argparse.ArgumentParser("Implement a basic command line r2 by r2libr")
ap.add_argument("binary", help="The binary to analyse.")
args = ap.parse_args()
r2pipe = R2(args.binary)
while True:
print("> ", end="")
cmd = input()
if cmd.strip() == "q":
break
print(r2pipe.cmd(cmd))
Note that all radare2 APIs are exported as bare ctypes function prototype. Be catious with c-style strings.
Build Instructions
Clone the repository.
git clone https://github.com/radareorg/radare2-bindings
cd radare2-bindings/r2libr
Since radare2 chooses meson
as their alternative building system and it's cross-platform, the first step is install meson
.
pip3 install meson
Build the package. Note that on Windows, x64 Native Tools Command Prompt
is required to build.
python3 setup.py build
Install and use.
# Or pip3 install -e .
pip3 install .
Credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for r2libr-5.2.1.post1-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d50c53d77b3b63ed7c37f08c0ec8625d8d7960587aca210da15378ab0bdf93e |
|
MD5 | cc062224e47200e8eecf0ed06d39fd62 |
|
BLAKE2b-256 | 871e6f2f55504f7b8c3c70de62769b6e89f6b1282aea1e767cf5759f609037af |
Hashes for r2libr-5.2.1.post1-py3-none-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90e309514360c4541151fbf8f67591410d86ef4e299192575afdecb59eaa2f1e |
|
MD5 | 57c56b472b76e8506691b5325aecf9d0 |
|
BLAKE2b-256 | 7cee1a880428fd96a535b3ff7c8592495b1772262789b0955bba3c4cf71c029d |
Hashes for r2libr-5.2.1.post1-py3-none-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cd31ddb9fbb39ba0e32e7a2a8d68f4b2d59e0d579fb548aacb6b1e025375b95 |
|
MD5 | 6eccd4c68bc4ea6c91ce880a40c4d7e1 |
|
BLAKE2b-256 | 0bafb5a4e7ce5a2f64af879b31969b84e96bc95e073ff407c50a6716db592213 |