Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 2.14 KB

plugins.md

File metadata and controls

47 lines (34 loc) · 2.14 KB

Plugins

IO plugins

All the access to files, network, debugger, etc.. is wrapped by an IO abstraction layer that allows to interpret all the data as if it was a single file.

IO plugins are the ones used to wrap the open, read, write and 'system' on virtual file systems. You can make radare understand anything as a plain file. E.g., a socket connection, a remote radare session, a file, a process, a device, a gdb session, etc..

So, when radare reads a block of bytes, it is the task of an IO plugin to get these bytes from any place and put them into internal buffer. An IO plugin is chosen by a file's URI to be opened. Some examples:

  • Debugging URIs

    $ r2 dbg:///bin/ls $ r2 pid://1927

  • Remote sessions

    $ r2 rap://:1234 $ r2 rap://:1234//bin/ls

  • Virtual buffers

    $ r2 malloc://512 shortcut for $ r2 -

You can get a list of the radare IO plugins by typing radare2 -L:

$ r2 -L
rw_  zip         Open zip files apk://foo.apk//MANIFEST or zip://foo.apk//theclass/fun.class, show files with: zip://foo.apk/, open all files with zipall:// (BSD)
rwd  windbg      Attach to a KD debugger (LGPL3)
rw_  sparse      sparse buffer allocation (sparse://1024 sparse://) (LGPL3)
rw_  shm         shared memory resources (shm://key) (LGPL3)
rw_  self        read memory from myself using 'self://' (LGPL3)
rw_  rap         radare network protocol (rap://:port rap://host:port/file) (LGPL3)
rwd  ptrace      ptrace and /proc/pid/mem (if available) io (LGPL3)
rw_  procpid     /proc/pid/mem io (LGPL3)
rw_  mmap        open file using mmap:// (LGPL3)
rw_  malloc      memory allocation (malloc://1024 hex://cd8090) (LGPL3)
r__  mach        mach debug io (unsupported in this platform) (LGPL)
rw_  ihex        Intel HEX file (ihex://eeproms.hex) (LGPL)
rw_  http        http get (http://radare.org/) (LGPL3)
rw_  gzip        read/write gzipped files (LGPL3)
rwd  gdb         Attach to gdbserver, 'qemu -s', gdb://localhost:1234 (LGPL3)
r_d  debug       Debug a program or pid. dbg:///bin/ls, dbg://1388 (LGPL3)
rw_  bfdbg       BrainFuck Debugger (bfdbg://path/to/file) (LGPL3)