Skip to content

radare2-1.0 aka "Finally"

Compare
Choose a tag to compare
@radare radare released this 09 Nov 02:38
· 19894 commits to master since this release

Date: Sun Nov 06 2016 14:34:18 GMT+0100 (CET)
Website: http://radare.org
Tarball: https://github.com/radare/radare2/archive/1.0.tar.gz

radare2 1.0 comes with 20122 new lines of new features, bug fixes and enhancements. Here some of the most important highlights:

The project have finally reached 1.0. What does it mean?

It means that 10 years have passed and the ecosystem changed enough since its inception that it requires a new rethink of the versioning numbers.

Pushing a new release every 6 weeks, increasing 0.1. And adding +1.0 after every r2con. The 3rd version number will be used in case of emergency because of a buggy release or a backported security fix. In this case a +0.0.1 will be released.

The community evolves in a pretty healthy way, and contributors come and leave over time. This release conforms the base for the future of radare, providing a more structured and predictible evolution of features and apis.

In addition. The r2pipe bindings proved to be more than enough for most needs of our users, more stable, available on more languages and faster than the native bindings. So this is the recommended way to script r2 or write tools that interact with it.

Language bindings will be still maintained, but it requires some focus, which is actually low, in the sense that I'm just fixing when the build breaks.

--pancake

Major contributors

  • pancake keeps owning > 50% of the commits
  • alvarofe major contributor, bugfixer
  • mrmacete implemented the long-standing need of recursive emulation support
  • killabytenow kept pushing nice AVR ESIL updates
  • Unlogic focused in RAsm
  • maijin for remembering all the issues and mangling the testsuite
  • h4ng3r worked on fixing bugs in the bin+anal of android apps
  • sre for coming back from debian land

Known Bugs

  • Slow on big files - after analyzing a big file (>1MB) the visual mode can become pretty slow, this can be "optimized" by disabling asm.slow, but it must be approached in a proper way to avoid O(n) requests to Flags, Functions, Basic blocks and other information that is requested many times.
  • Project structure has changed, they are upgraded when saved, but there must happen some data loss. Next releases should improve on that.
  • Collisions in hashtable - some very rare situtations may lead to a hash collision, this is fixed in another branch that updates Sdb, but it's not stable enough to be merged.
  • Debugger is working but could be much better, the main issue is actually the regression test. You may want to use r2frida or r2lldb from NowSecure to debug with r2 when r2 is not enough.
  • Binary headers are not easy to visualize or patch, there are tools for doing that, but next releases will make this situation better.
  • Signature matching is not working as good as it shuold, new signature definitions will appear in the next release, as well as some enhancements and speedups.

Highlights:

  • More commands are now autocompleted
  • Refined and new color themes (CGA!)
  • Added support for menuetOS/KolibriOS binaries
  • Fixed bugs and enhanced PE, MACH0 and ELF parsers
  • COFF symbols are now parsed properly
  • Support DOS4GW executables
  • Implemented sort (by nth column) in the internal grep ~$[n]
  • Projects are now contained into a single directory and support GIT and ZIP integration
  • Fixes in p[?] -X (negative offsets)
  • Add the ?O command to enumerate all mnemonics
  • pdr now supports asm.emu
  • Add CCf to list all comments in current function
  • Added asm.capitalize
  • Initial implementation of io.pava
  • Add ik* command to load bin headers info, and use Cf for that
  • ragg2-cc now supports linux-arm64 via the NDK
  • Support more instructions and various fixes in assemblers
  • Fixed all license issues reported by Debian
  • Allow r2pm to support tarballs, run commands and cd to repos
  • Function signature parameter matching
  • simple recursive emulation in graphs
  • asm.decoff to show offset in base 10 instead of hexa
  • utf8 graphs
  • Better Android support
  • r2k support for linux

r2pipe hightlights

  • NodeJS api broke backward compat but standarized callback consctructions
  • Support asyncawait, promisify and other modern JS stuff
  • Added JNI r2pipe for Java
  • Added DllImport for .NET
  • Add support for Groovy, Clojure, PHP, OCaml
  • Added JSON support for Nim
  • Updated Perl module
  • Support sideloading binaries via r2pipe (via .getBuffer and setBuffer)

Commits:

Autocompletion

  • Add autocompletion for et and ec
  • Add autocompletion for wxf and wtf
  • Autocomplete eco color themes

Themes

  • Complete xvilka theme
  • Enhance white theme
  • Fix dark theme
  • Add new theme CGA
  • Make the lima and pink themes look as lima and pink
  • Update the ogray theme
  • Ansify + update rasta theme

Projects

  • Fix error messages in project_save
  • Fix #6017 - Pn projects notes ported to the new projects
  • Implement project upgrading and remove old code
  • Implement prj.zip and fix prj.git
  • Fix #5141 - Initial support for prj.git
  • Implement prj.files and fix some bugs in project listing and saving
  • Projects are now completely contained inside a single directory
  • Saving/retrieving functions stack in project file (#5973)
  • Fix #5952 - Handle scr.null in projects

File Format

  • Add support for MENUET{00,01,02} binaries
  • Add bin.menuet plugin
  • Fix #6106 - better parsing for COFF
  • Replace mach headers from AAPL to LLVM
  • Fix ELF support for 32-64bit relro relocations
  • Fix Dalvik imports and symbol ordinals
  • Add various symbols in bin_nes

MZ

  • remove check against dos_file_size in mz parser
  • Enhancement of MZ
  • Fix #6045 - Check entrypoint to accept raw MZ bins

Macho

  • Support weak framework libraries in mach0 parsing
  • Add more ARM cpu subtypes for mach0
  • Add ios-cydia32.sh script to build radare2-arm32 cydia package
  • Fix #4556 - use jetsam limit to bypass launchd memory restrictions on iOS

Debugger

  • Send KILL to child on ^C in dc when dbg.consbreak is set
  • Fallback to oo when ood fails
  • Initial implementation of the RDebug.io plugin

Disassembler

  • Update capstone from git
  • Move z80 non-commercial to r2e
  • Remove m68k anal plugin - Gets moved to r2e to be installed with m68k, capstone by default
  • Fix ljmp with immediate segment:offset (#6125)
  • Fix pd -N issue, with correct offset for bw-disassembling (#6016)
  • Rework of X86_INS_XADD. It is now basically an X86_INS_XCHG + add. (#5996)
  • More memory AVR operations (LDS/LPM)
  • Fixed and added opcode descriptions (#5942)
  • Fix opcode for 64bit instr with 32bits regs
  • Accept sreg:[x] and [sreg:x] syntax

MIPS

  • Fix mips emu function resolution in disasm (#6100)

ARM

Commands and evals

  • Massive improvement of pdS
  • Add CCf to list all comments in current function
  • Add Cr command to run commands in meta for disasm
  • Add Sf as an alias for S 0 0 foo mrwx
  • Implement ?O and r_asm_mnemonics() new API
  • Implement ?Od to list all mnemonics + description
  • Implement Po& and 2 -tp to load projects in a thread
  • Add asm.decoff
  • Add asm.capitalize, for those who are nostalgic of softice
  • Initial support for io.pava
  • implement ahb-, ahS-, ...etc
  • Add @@c: as an alias for @@=
  • Add asm.midflags=3 (symalign)
  • Add r2pm ls|cd
  • Add S.-* to remove all sections in current address
  • Fix S-[id]
  • Implement rasm2 -s?
  • Initial implementation of pC (column disasm)
  • Implement @i: for temporary instruction seeks
  • Add ik* command to load bin headers info, and use Cf for that
  • Add asm.minicols config var for pCd
  • Implement column sorting in RCons.grep
  • Now ~: operator support ranges and negative values
    • ~:-1 show last line
    • ~:-2 show line before the last one
    • ~:..3 same as ~:0..3
    • ~:2..8 show lines from 2 to 8
    • ~:2.. show lines from 2 to the end
  • Implement scr.linesleep and scr.pagesize for fancier demo output
  • Honor varsub and relsub with asm.ucase for parse.arm
  • Refactor dmh
  • Implement wts to send data to socket
  • Add dr8 and more commands for the RDebug.io plugin
  • Show instructions in /A and add /A[jq]
  • Use RStack in r_cons_push/pop
  • Fix #5975 - Honor asm.varsub and asm.relsub with asm.ucase
  • Initial import of io.tcp + rsocket cleanup
  • Add bash autocompletion support
  • Fix debruijin arguments meaning and uses (#5914)
  • Fix wxs command
  • Enable graph.nodejmps by default (#5904)
  • Specify row to start sorting with ~$[n]

Fixes

  • Fixes NULL deref and oob
  • Fix coverities
  • Fix pdrj JSON
  • Fix #6126 - r2 -f work with -c
  • Fix wt usage
  • Fix another memleak in pdr (#6059)
  • Fix #5924 - r_flags -> r_flag
  • Update and fix LGPL Z80 disassembler (#6009)
  • Fix #3546 - Enhanced support for RCons line grep
  • Removed strcasestr() and bzero() moved to memset()
  • Fix #5909 - r2 -o is now -k
  • Changed r_list_length to use list->length
  • Changed the code to use C API instead of forking rabin2 or create a new core instance when searching strings.
  • Fix cannot find function at issue on some functions
  • Fix #5986 - use RStack in r_cons_push/pop
  • Fix call xrefs in arm+thumb
  • Fix div by zero with scr.pagesize and matrix theme
  • Fix #5974 - reflines not shown for last disasm line
  • Fix #5992 - Honor ^C in tcp://
  • Fix syscall resolution for linux-arm-64
  • Honor bin.strings
  • Implement http.log and http.logfile
  • Fix #5997 - Do not permit xrefs on invalid addresses
  • Fix #5968 - search string when malloc://X + wx
  • Initial implementation of flag zones
  • Updated various opcode descriptions (#5948)
  • Ease GIT/GPG integration
  • Fix esil manpage
  • Fix issue in aeso
  • Implement support for recursive help ?*
  • Use RIODesc.detach when serving from RCore
  • Implement RIODesc.detach()
  • Fix call rX hotkeys glitch in disasm
  • Add utf8 rune support for RCons.canvas
  • Correct offset for backwards disassembling with pd -N

Radare2 tools

  • Fixing help issues in rax2

rabin2

  • Implement LC_MAIN and PAGEZERO in rabin2 -C mach0
  • Fix filesize for mach0 in rabin2 -C
  • Make more visible the relation between r2's i and rabin2

ragg2

  • Add linux-arm64 sflib support for ragg2-cc
  • Initial support ndk-gcc in ragg2. Tested for arm64

rasm2

  • Add support for .endian rasm2 directive
  • Support /**/ in a single line
  • Fix /**/ comments in rasm2
  • Initial support for .align in rasm2
  • Support /**/ in rasm2 -f
  • Add support for short jumps in nz
  • Add arm shift ops
  • Update and fix LGPL Z80 disassembler
  • Add segment register handling in nz assembler
  • Assemble 64bit byte mov correctly FIX 6042

Analysis

  • Make anal hint printing more grep friendly
  • Fix #5935 - improvements on ah command
  • Actually use arg_size to advance the stack pointer
  • Nice error display: unk_size, unk_format or unk_size_format
  • Fix issues in emuwrite call args in disasm (#6087)
  • Fix #4497 - Recursive function emulation
  • Fix #5860 - axtj relsub (#5964)
  • Fix aei help text (#5949)
  • More AVR anal ops (#5888)
  • Fixed LCALL for x64 (#5930)
  • Fix dd IX instructions - although only seemed to happen on OSX, not on linux.
  • Fix ed op and fdcb ops
  • Fix fd ops with bad type flags
  • Remove invalid instruction "in f, [c]" which is not referenced in http://clrhome.org/table/
  • Fix bad offsets to ops following removed one
  • Set zf on arm (16 / 32 bits) compare (#6024)
  • Add more arm64 regs
  • Fix movk esil
  • Add long-to-double instruction for anal.dalvik
  • Fixing LCALL for x86 16/32 bit (#5910)
  • Fill the op.type field for STOS and LODS on x86.cs
  • Check that register is not memory i.e. [eax] to generate correct opcode
  • Improved ESIL for x86
  • Disable syscall emulation in esil by default
  • Add sync optype and refix the jmphint glitch
  • Added early returns (#6002)
  • Remove invalid anal str for const-class instruction.
  • Fix #5890 - Assume pushed executable addresses as CODE references
  • Fixed LJMP, added support to segments in JMP, fixed LCALL. (#5920)

Graphs

  • Recursive graph emu (wip)
  • Add recursive reg arena in graph
  • Force comments on graph pds
  • because pds works by parsing also the comments
  • especially for emu strings and symbols
  • Add edges in afll Fix #6092#
  • Add indegree and outdegree in afi and afij
  • Use tinyrange to improve times

r2pm

  • Do not recommend to update after r2pm update
  • Add R2PM_TGZ for r2pm
  • Add R2PM_OLDPWD var for r2pm
  • Add R2PM_SUDO and enhance r2pm -c
  • Fix prompt in r2pm cd

Types

  • Fixing some type error and remove old databases
  • Added windows function prototypes
  • Add some libc functions to types info (#6013)
  • Added more functions for linux/osx
  • Use anal types sdb in emuwrite disasm hints (#6086)
  • Resolve function calls and arguments type
  • Add size_t for 32 / 64 bits
  • Change char * to z instead of *z to work with both
  • register and stack calling conventions
  • Fix parsing error with const
  • Add WORD and PADDR in types-windows
  • Add kernel,processes,.. in types-windows
  • Update linux-arm-64 from android definitions

Numbers:

  • commits: 366
  • fix: 186
  • crash: 7
  • new: 8
  • add: 77
  • anal: 18
  • leak: 2
  • esil: 6
  • debug: 7
  • type: 16
  • oob: 7
  • honor: 11
  • update: 13
  • clean: 9
  • import: 2
  • endian: 3
  • indent: 4
  • command: 12
  • enhance: 5
    • diff:
    • add: 45928
    • del: 25806
    • diff: 20122
.---------------------------------------------------------------------------------------------------------------------.
|                                                    Release 1.0.0                                                    |
|---------------------------------------------------------------------------------------------------------------------|
|     name     | commits | fix | add | honor | leak | esil | endian |                     authors                     |
|--------------|---------|-----|-----|-------|------|------|--------|-------------------------------------------------|
|              |     366 | 186 |  77 |    11 |    2 |    6 |      3 |                                                 |
| binr/radare2 |       7 |   5 |   0 |     0 |    0 |    0 |      0 | pancake alvarofe SztfG                          |
| binr/rabin2  |       5 |   1 |   2 |     0 |    0 |    0 |      0 | pancake alvarofe Hi-Angel                       |
| binr/radiff2 |       1 |   1 |   0 |     0 |    0 |    0 |      0 | pancake                                         |
| binr/rahash2 |       1 |   1 |   0 |     0 |    0 |    0 |      0 | pancake                                         |
| libr/debug   |      24 |  10 |   5 |     1 |    0 |    1 |      0 | pancake alvarofe dromero.perez killabytenow ... |
| libr/bin     |      58 |  29 |  14 |     0 |    0 |    1 |      0 | pancake alvarofe h4ng3r maijin ...              |
| libr/core    |     164 |  88 |  31 |     7 |    2 |    1 |      0 | pancake alvarofe mrmacete maijin ...            |
| libr/crypto  |       0 |   0 |   0 |     0 |    0 |    0 |      0 |                                                 |
| libr/cons    |      24 |  11 |   4 |     1 |    0 |    0 |      0 | pancake alvarofe                                |
| libr/anal    |      86 |  47 |  29 |     3 |    0 |    5 |      0 | pancake alvarofe killabytenow maijin ...        |
| libr/asm     |      42 |  28 |   7 |     0 |    0 |    0 |      2 | pancake sven alvarofe SztfG ...                 |
| libr/util    |      47 |  25 |   8 |     2 |    0 |    0 |      0 | pancake alvarofe ret2libc bluec0re ...          |
| libr/egg     |       2 |   1 |   1 |     0 |    0 |    0 |      0 | pancake alvarofe                                |
| libr/io      |      20 |  11 |   0 |     1 |    0 |    0 |      0 | pancake alvarofe                                |
| shlr/bochs   |       0 |   0 |   0 |     0 |    0 |    0 |      0 |                                                 |
| man          |       3 |   2 |   1 |     0 |    0 |    1 |      0 | pancake sre Hi-Angel                            |
'---------------------------------------------------------------------------------------------------------------------'

Contributors: 366 / 31 = ~ 11.806451612903226

54% - 198 pancake
18% - 66 alvarofe
5% - 21 maijin
4% - 15 killabytenow
2% - 10 mrmacete
2% - 9 unlogic
2% - 8 h4ng3r
1% - 5 ret2libc
1% - 4 SztfG
1% - 4 ahmedsoliman
0% - 3 lottmann86
0% - 2 mr.exodia.tpodt
0% - 2 cutlassc91
0% - 2 mo
0% - 2 sre
0% - 1 defragger
0% - 1 dx
0% - 1 dev+git
0% - 1 maykeye
0% - 1 marion-m
0% - 1 qwokka
0% - 1 noahshihabi
0% - 1 kalianon2816
0% - 1 bluec0re
0% - 1 avinash.mankoo
0% - 1 Krishath
0% - 1 philipp.B.610
0% - 1 Hi-Angel
0% - 1 dromero.perez
0% - 1 alex.darredevil
0% - 1 b1ack0wl