Skip to content

radare2 0.9.0

Compare
Choose a tag to compare
@radare radare released this 26 Feb 14:19
· 30807 commits to master since this release
hg tag -r      1974 0.9
codename:      furoner
last commit:   Tue Dec 06 01:41:17 2011 +0100
oldest commit: Tue Nov 01 12:59:07 2011 +0100
commits:       115

Author and main developer:

email: pancake<nopcode.org>
twitter: http://twitter.com/trufae
github: http://github.com/radare

Thanks to:

  • @santitox for the XOR shellcode encoder and big-gmp implemention
  • Glyn Kennington's patch for the build system
  • sre the Debian guy and betatester
  • earada for discusing, testing, reporting and bugfixing lot of stuff
  • vext01 for the OpenBSD bug reportz and packaging
  • l0gic for the archlinux package and bugreporting
  • Ender for bokken packaging and r2 feedback
  • ash for bokken, bug reports and beers
  • Nicolai Stange for the SPARCv9 (64bit) support
  • Instruments, Dtrace, Valgrind, llvm-analyzer, OpenBSD
    • fixed memory leaks
    • reduced memory usage in 40%
    • optimized code analysis
    • null pointers and double frees
    • do not use alloca() anymore
    • change io.va only when needed
    • Fix two format string portability issues

Portability:

  • Tested support for iOS, Windows, GNU/Hurd and GNU/kFreeBSD
  • Use O_BINARY in all open() calls on Windows fixes IO
  • Fix dup2 for w32

Binaries

  • Various symbol resolution fixes in ELF
  • Honor -o in rabin2 for dump section operation
  • Add initial native support for fat binaries in r2
    • Select arch/bits with r2 -a and -b (old -b is now -B)
    • Kinda hacky, but works for osx-x86/32/64
    • Export offset information of fat bins
  • add initial support for creating p9 binaries
  • Add initial support for plan9 binaries
    • supports x86, arm, ppc, sparc, mips
  • RBin suport new section_end flags

Filesystems

  • Autodetect filesystem when mounting
  • Fix signature of r_fs_name()

Bindings

  • Updated bindings
  • Fail build of bindings if somethings goes wrong
  • Depends on valabind 0.6.4 that fixes some bugs on Python
  • Added bindings for NodeJS
  • Add accessors for RAnalFcn.{refs,xrefs,vars,bbs}

Visual mode

  • Enhaced speed visual mode
    • Dot clear unless necessary (fix flickering)
    • Cursor is now hidden
  • Add 'T' menu at visual mode to show comments and anal info
  • Use x1, x2, x3... to seek between xrefs in visual mode
  • S= now fits in 80 columns
  • Fix P visual print rotation
  • Show flag+delta on title

Assembler/disassembler

  • Added assembly description API (ported from r1's rsc adict)
    • r_asm_describe(): Added api to get opcode descriptions using sdb
  • Add support for SPARCv9 (64bits)
    • Disassembler and Code analysis (binutils-2.21.1)
  • Use asm.size config variable to show size of opcodes
  • Add new assembler directives
    • .int8 (alias of .byte)
    • .int16 (alias of .short)
    • .int32 and .int64
  • Add -D flag to rasm2 (show hex and asm)

Debugger

  • Execution traces are now stored as a graph
  • Warn if file size != region size in dml
    • dmd and dml commands to dump/load debugger memory regions
    • Sd and Sl to dump/load debugger memory region from/to file
  • Initial implementation of r_debug_map_protect()
    • Bind to dmp command
    • Only w32 + osx, needs more work

New commands

  • Added dtc and dtg to draw execution call graphs
  • Add /z command to search for strings
  • Add /v2 /v4 /v8 and remove /q
  • added 'afi' to show info of functions
  • Add 'fl' command to get length of flag
  • Use ?d to get description of opcode (uses asm.arch)
  • Added 'pdi' command
    • Like 'pi', but showing offset and bytes
  • Added 'pda' new commands
    • Disassemble code byte-per byte
    • Disobey instruction length
  • afl is now less verbose
  • Make 'fd' accept arguments
  • Use "f name 1 off" instead of "f name @ off" in dr*
  • Added 'g' command to use r_egg api from RCore

API changes

  • Added r_core_file_reopen() // work in progress
  • Added r_flag_get_at () to handle deltas
  • New APIs in r_util
    • r_sys_run() for JIT execution
    • r_file_size()
    • r_cons_clear_line()
    • Add has_va in RBinInfo class for bindings
    • Added new api r_graph
  • Added R_MEM_ALIGN()
  • r_core_bin_info shows bin data from core
  • rabin2 now depends on RCore as long as r_bin_info()

rasc2 deprecated

  • rasc2 has been deprecated and reimplemented inside r_egg
    $ ragg2 -i x86.osx.binsh -b 64 -k osx -f mach064 -o a.out
  • Added ragg2 and ragg2-cc
    • Shellcode compiler for linux-x86-32/64 and OSX-32 based on ${CC}
    • XOR encoder
  • Padding data is now defined like a format string

New stuff:

  • rax2 now supports hexpair <-> binary conversions (-s, -S)
  • Added eval var descriptions (see e?? command)
  • Add graph.font=Courier eval var to configure dot graph output
  • Add support for byte patching in ragg2 (-d, -D, -w)

Search engine

  • remove search.asmstr and use /a and /c
  • Show progress info in search
  • Rename /a to /r
  • Fix search when io.va=true
    • Add search.in = file, section, raw

Changes:

  • Add support for continuations in rapatch2 '+' char
  • Add r2 -a arch -b bits
    • -b flag to specify blocksize is now -B
  • rasc2 has been deprecated. ragg2 is the replacement
  • Colorize trap instructions in bright red
  • Handle int3 on x86 as a trap instruction instead of SWI

Build framework

  • Magic files are distributed on Windows too
  • Simplified makefiles to use absolute paths
  • Add sys/static.sh
  • Add install-rev.sh script to build old versions of r2

Bug fixes:

  • 'oo' reopen command will
  • Update file size information when requested
  • Fix bug when redefining io sections
  • Fix warning in R_MEM_ALIGN() macro
  • Fix rabin2 -B baddr
  • Fix overflow in r_cons
  • Fix loading strings on a object file without io.va
  • Fix for .ko and .o elf parsing
  • Use UT64FMTx instead of %llx in various places (fix for w32)
  • Fix AT&T x86 disassembler
  • Fix negative blocksize and printidx issues in visual
  • Many ugly hacks to enhace w32 console
  • Various fixes in sys/
  • Added dist-bin.sh and python-bindist.sh
    • Fixes paths and pkgnames
  • Implement dtg (debug trace graph)
  • Fix RIO seek undo with io.va