All Projects → radareorg → Radare2 R2pipe

radareorg / Radare2 R2pipe

Access radare2 via pipe from any programming language!

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Radare2 R2pipe

r2con-prequals-rhme3
r2 the Rhme3! The RHme (Riscure Hack me) is a low level hardware CTF that comes in the form of an Arduino board (AVR architecture). It involves a set of SW and HW challenges to test your skills in different areas such as side channel analysis, fault injection, reverse-engineering and software exploitation. In our talk we will briefly recap RHme2…
Stars: ✭ 15 (-92.92%)
Mutual labels:  radare2
Radare2 Pm
Package Manager for Radare2
Stars: ✭ 100 (-52.83%)
Mutual labels:  radare2
R2vmi
Hypervisor-Level Debugger based on Radare2 / LibVMI, using VMI IO and debug plugins
Stars: ✭ 130 (-38.68%)
Mutual labels:  radare2
A Journey Into Radare2
A series of tutorials about radare2 framework from https://www.megabeets.net
Stars: ✭ 473 (+123.11%)
Mutual labels:  radare2
Arcore Patch
Attempt to get ARCore Preview 2 running on unsupported devices
Stars: ✭ 74 (-65.09%)
Mutual labels:  radare2
Reversing List
Reversing list
Stars: ✭ 106 (-50%)
Mutual labels:  radare2
rair-core
RAIR: RAdare In Rust
Stars: ✭ 63 (-70.28%)
Mutual labels:  radare2
Radeco
radare2-based decompiler and symbol executor
Stars: ✭ 313 (+47.64%)
Mutual labels:  radare2
R2m2
radare2 + miasm2 = ♥
Stars: ✭ 86 (-59.43%)
Mutual labels:  radare2
R2con2019
r2con2019 - slides and materials
Stars: ✭ 128 (-39.62%)
Mutual labels:  radare2
Radare2book
Radare2 official book
Stars: ✭ 502 (+136.79%)
Mutual labels:  radare2
R2frida
Radare2 and Frida better together.
Stars: ✭ 610 (+187.74%)
Mutual labels:  radare2
Jupyter Radare2
Just a simple radare2 Jupyter kernel
Stars: ✭ 109 (-48.58%)
Mutual labels:  radare2
R2dec Js
radare2 plugin - converts asm to pseudo-C code.
Stars: ✭ 345 (+62.74%)
Mutual labels:  radare2
Jni helper
Find JNI function signatures in APK and apply to reverse tools.
Stars: ✭ 154 (-27.36%)
Mutual labels:  radare2
r2-cheatsheet
Radare2 cheat-sheet
Stars: ✭ 105 (-50.47%)
Mutual labels:  radare2
Radare2 Bindings
Bindings of the r2 api for Valabind and friends
Stars: ✭ 100 (-52.83%)
Mutual labels:  radare2
Radare2 Extras
Source graveyard and random candy for radare2
Stars: ✭ 202 (-4.72%)
Mutual labels:  radare2
R2frida Wiki
This repo aims at providing practical examples on how to use r2frida
Stars: ✭ 168 (-20.75%)
Mutual labels:  radare2
Iaito
This project has been moved to:
Stars: ✭ 1,516 (+615.09%)
Mutual labels:  radare2

r2pipe

r2pipe logo

The r2pipe APIs are based on a single r2 primitive found behind r_core_cmd_str() which is a function that accepts a string parameter describing the r2 command to run and returns a string with the result.

The decision behind this design comes from a series of benchmarks with different libffi implementations and resulted that using the native API is more complex and slower than just using raw command strings and parsing the output.

As long as the output can be tricky to parse, it's recommended to use the JSON output and deserializing them into native language objects which results much more handy than handling and maintaining internal data structures and pointers.

Also, memory management results into a much simpler thing because you only have to care about freeing the resulting string.

This directory contains different implementations of the r2pipe API for different languages which could handle different communication backends:

  • Grab R2PIPE{_IN|_OUT} environment variables
  • Spawn r2 -q0 and communicate with pipe(2)
  • Plain TCP connection
  • HTTP queries (connecting to a remote webserver)
  • RAP protocol (r2 own's remote protocol)

Most of the language enable asyncronous capabilities in order to handle the result of the operation in a callback, allowing a single program to interact with multiple instances or connections to different r2 sessions at the same time.

  • Syncronous
  • Asyncronous

In addition, r2pipe scripts can be used to write plugins for radare2 or extend current functionalities:

  • Assembler/Disassembler plugin for RAsm
  • RIO plugin to abstract read/write/system operations
  • Syscall handler for the ESIL emulator
  • ...

The most supported languages are:

  • NodeJS
  • Python
  • Swift
  • C/Nim/Vala/C++

But there is r2pipe for:

          pipe spawn async http tcp rap json plug lib buff
C           X     X     -    X    X   X    X    X   X   X
C++/Qt      X     X     -    -    -   -    X    -   X   -
C# / F#     X     X     X    X    -   -    -    -   X   -
D           X     -     -    -    -   -    X    -   -   -
Erlang      X     X     -    -    -   -    -    -   -   -
Go          X     X     -    -    -   -    X    -   -   -
Haskell     X     X     -    X    -   -    X    -   -   -
Java/Groovy -     X     -    X    -   -    -    -   X   -
Lisp        -     X     -    -    -   -    X    -   -   -
NewLisp     X     X     -    X    -   -    X    -   X   -
Nim         -     -     -    X    -   -    X    -   X   -
NodeJS      X     X     X    X    X   -    X    X   -   X
Ocaml       -     X     -    -    -   -    X    -   -   -
Perl        X     X     -    X    X   -    X    -   -   -
PHP         -     X     -    -    -   -    -    -   -   -
Python      X     X     X    X    X   X    X    X   X   -
Ruby        X     X     -    -    -   -    X    -   -   -
Rust        X     X     -    X    X   -    X    -   -   -
Swift       X     X     X    X    -   -    X    -   X   -
Vala        -     X     X    -    -   -    -    -   -   -
Clojure     X     X     -    -    -   -    -    -   -   -

--pancake

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].