github radareorg/radare2 5.2.0
5.2.0 - codename: "morens"

latest releases: 5.9.2, 5.9.0, 5.8.8...
3 years ago

Release Notes

Version: 5.2.0
Previous: 5.1.1
Commits: 316
Contributors: 35

Contributors

Alexandr Alexandr Alexis Ehret Alucowie Basstorm Dennis Goodlett Florian M"arkl Francesco Tamagni Khairul Azhar Kasmiran Lars Wrenger Murphy Pamplemousse Paul I RHL120 Reviakin Evgeny Roman Valls Guimera Sylvain Pelissier Taggggy condret el-goe gogo gogo2464 intruder-kat ivan tkachenko meme mio mrglm murphy pancake ramikg soroosh-chabi temp1337 valdaarhun wargio

TLDR

**anal**

  • Use =RS 8 for avr
  • Add =RS directive in reg profiles to define default value
  • Fix jump table analysis issue for r2ghidra.v850 (#18550)
  • Test for pcdelta ARM ldr fix
  • Fix pcdelta for ARM esil LDR
  • V850 jmptable fix, cmpval is almost always -1 and slows anal to a crawl (#18498)
  • Add missing v850 calling convention definition file
  • Remove unused type FcnTreeIter
  • Fix oobread ppc plugin
  • handleMidFlags: Reset ds->midflags on entry
  • asm.flags.middle: Don't split bb instruction
  • aae: Realign on fcn start if not in bb
  • Fix duplicate vtable entries after 'aaa'
  • af-*: Remove function flags too
  • Fix cX command and minor cleanup
  • Fix PSW register bits definition for v850
  • Add support for jump tables on v850
  • Fix #18284 (json command returning empty string)
  • Cd1 Cd2, Cd4, Cd8 are aliases for Cd[1248]
  • Fix SN register value for linux-arm64
  • Improve reg profile parsing and error handling
  • Detect shift for the first switch case
    • Fix gcc 9.2.0 kind of x86_64 jumptables
  • New command: aaw, flag all words pointing to known flags

android

  • Add r_file_binsh() and avoid hardcoding /bin/sh for Termux

api

  • Remove some exit() calls in libr
  • Rename r_cons_memcat to r_cons_write
  • ABI/API break. RAnnotationCode->RCodeMeta
  • Use more r_str_ncpy and improve it to not alloc beyond nullbyte
  • Add r_vector_flush()
  • Apply desired lifecycle of esil syscall and interrupt handlers in esil_dummy plugin
  • Add r_anal_esil_{syscall/interrupt}_{get/del}

bin

  • Parse the symbols from the ELF .gnu_debugdata section
  • Support x86_64 and macOS dyld caches (#18570)
  • Fix wrong demangling of tiff swab16 bit data
  • Use r_bin_import_free() as cb for imports list (#893)
  • Improve python disassembler and binary parser
  • Fix large loading times when parsing encrypted/fuzzed macho
  • Do not consider ELFs with .gnu_debugdata section as stripped
  • Fix Mach-O related coverity issues
  • Fix coverity issues in xnu kernelcache
  • Fix ASAN crash when allocating more relocs than the filesize
  • Fix long time analyzing oob objc data
    • Fix long time analyzing oob objc data
  • Fix asan crash found in r2_hoobr_dex_loadcode
  • Fix oobread bug in r_str_(ndup|nlen) APIs spotted by ASAN in SMD parser
  • Fix UAF in rz_bin_reset_strings()
  • Fix assert in iSj for invalid size sections
  • Minor ELF cleanup, using more size_t and ut64.max instead of 0
  • Add Support for new CoreSymbolication element format
  • Unset io.cache when not needed after bin.cache
  • Fix warning message when loading files with relocs

build

  • Move shlr/tcc into libr/parse/c
  • Fix meson build issues related to grub (#18554)
  • Fix the failure in finding the executing user's ID during install (#18508)
  • Add the nogpl meson option
  • Fix version not being updated after running sys/termux.sh
  • Update doc/license for more clarifications
  • Add plugins=nogrub option for meson
  • Improve sys/termux.sh checks
  • Do not run sys/ldconfig on Android
  • Add missing use_fork and use_dylink to meson
  • Fix #18397 - Be less strict when running sys/install.sh as root
  • Fix debian32 in CI
  • Allow custom CFLAGS for Debian packaging
  • Add meson -Dplugins=a,b,c to build only the specified plugins
  • Fixes to make the r2blob shine again
  • Add 32bit Debian packaging and bonus CI fixes
  • Add use_ssl meson option to be in sync with acr behaviour

charset

  • Implement ps, psz, psj and psj with charset support
  • Support multi-byte input in charset
  • Add more runes to pokered

ci

  • Fix linux-static pub action

cmd

  • Sync om and omj output

cons

  • Fix Ctrl-J issue and remove redundant code in 'Ctrl-J' block
  • Implement RConsPixel and RBraile APIs
  • Fix #16254 - grep expression parse improvement
  • Fix null derefs on RCons when no context is provided

core

  • Fix #18412 - Add R2_IGNVER variable to load plugins ignoring the version
  • Remove asm.bb (asm.bb.line -> asm.lines.bb, asm.bb.middle -> asm.bbmiddle)

crypto

  • Update to use keys that can be programmed onto a CPS2

debug

  • Implement drcq and show it in visual debug/emu
  • Fix #18502 - dangling pointers issues in dbm
  • Revert "dmi commands handle symbols, exports, main, entries too
  • dmi commands handle symbols, exports, main, entries too
  • Implement dmis command as an alias for .dmi*
  • Workaround the dmi issue by using rabin2 in macOS for now
  • Add dbg.maxsnapsize to avoid snapping huge maps

debug"

  • Revert "dmi commands handle symbols, exports, main, entries too

decompiler

  • Detect retdec decompiler (pdz) in cmd.pdc

diff

  • Add abstract Levenshtein dist
  • Abstract r_diff_levenshtein_path
  • Add Levenshtiend path API to

disasm

  • Honor asm.cpu for asm.arch=ppc.gnu
  • Fix #18511 - Add dwarf info in pdj
  • Add the m68k.gnu disassembler plugin
  • Show overlapped flags if requested and show them differently (#706)
  • Honor cfg.debug in asm.section using dmi.
  • Improve asm.meta=false for 16, 32 and 64 words
  • Fix #17761 - Do not trim the "ptr " when asm.syntax=masm
  • Add pi+ and pi- commands as aliases for 'pi +' and 'pi -'
  • Fix asm.lines.bb with asm.sections set

dwarf

  • Implement CLj command and improve CL output

emu

  • Apply desired lifecycle of esil syscall and interrupt handlers in esil_dummy plugin
  • Add dummy interrupt and syscall handlers

esil

  • Add r_anal_esil_{syscall/interrupt}_{get/del}
  • Boolify all the ESIL callbacks
  • Fix some asserts and nullderef spotted on arm64
  • Esil plugin management APIs
    • Add r_anal_esil_{get/del}_op
    • Fix deactivating plugins on r_anal_esil_free
    • Add local getter for active esil plugins

fs

  • Fix absolute paths and add r_return guards
  • Fix fs.posix.cat and use r_sys_dir instead of reimplement (-48LOC)

graph

  • Add support for highlighted edges in graphviz
  • Add ageh command to let users define which node links should be highlighted

hash

  • Implement ssdeep fuzzy hashing algorithm
  • Fix name collision for SHA functions

io

  • Close #18257 / Remove RIODescData
  • Enable io-plugins to set bin.baddr on launch
  • Fix comment
  • Implement custom bit size cyclic memory layout and wrap flags in
  • Rename r_io_map_get_for_fd to r_io_map_get_by_fd
  • Rename r_io_map_resolve to r_io_map_get
  • Rename r_io_map_get to r_io_map_get_at
  • Implement slurp:// uri handler plugin
  • Implement omd command, as a simplified version of om
  • Fix infinite loop in r_io_map_next_available
  • Fix #17049 - oa whithout filename specify, add oa test
  • Add help message for winkd://? and improve desc

json

  • iVj must print valid json, not empty output (#18571)
  • Add json version output to r2 -vj
  • rasm2 -L now shows an array of objects
  • Fix #18284 (json command returning empty string)

lang

  • Add #!*? command to show rlang plugin examples
  • Add support to the V programming language for scripting

print

  • Implement pFX command exemplifying the use of r_sys_unxz()
  • Android Binary XML support (#18545)
  • Improved pdc, added pdco and pdcj, print orphan nodes
  • Fix alignment issues in RTable with utf8 fields

reg

  • Fix null printf issue in arpi command

search

  • Import @Siguza's arm64 xref finder
  • Show results after pressing ^C in /ad
  • Fix /ad of multiple consecutive instructions

shell

  • Fix proper hash comments & quotes mix (#18551)
  • Implement whoami and uid commands
  • rasm2 -Lj works the same way as -jL
  • Add variable autocompletion class in !!!
  • Add scr.loopnl to add a newline on all the @@ loops

test

  • Add R2R_SKIP_ASM env var handling in r2r

tools

  • Fix #18391 - Show help in r2pm even before initializing the db

util

  • Add r_file_find to recursive list files and subdirectories into a list
  • Rename dep in rbtree.c to depth
  • Rename d, d2, d3 in rbtree.c to direction ...
  • Optimize r_rbtree_cont_{first/last} #18485
  • Implement r_rbtree_cont_node_prev (siol eternal)
  • Implement r_rbtree_cont_last
  • Fix endless loop in r_rbtree_cont_node_next
  • Add unit test for r_rbtree_cont_node_next
  • Fix segfaults in rbtree.c (parent backlink)
  • Add r_rb_cont_tree_node_next (SIOL Eternal)
  • Add backlink to parent in RBNode (SIOL Eternal)
  • Add r_rb_cont_tree_find_node (SIOL Eternal)

visual

  • Add agfb for braile graphs
  • Revert "Fix memleaks in agraph by keeping a separated list of dummy nodes
  • Fix memleaks in agraph by keeping a separated list of dummy nodes
  • Initial implementation of graph edge highlighting

visual"

  • Revert "Fix memleaks in agraph by keeping a separated list of dummy nodes

Associated releases:

See below for the changelogs:

Highlights

Improved V850 Support

This release comes with several improvements for the V850 (in concret e2) cpu. The default disassembler is not really supporting many of the instructions of this architecture, but you can use r2ghidra as disassembler and analyzer which comes with a bunch of improvements for this architecture. Here's a list of the most relevant changes:

  • Add support for cyclic memory layouts, this memory model is only supported in some rare architectures like s390, VAX, old ARMs and some V850. And this is not supported by any other static analysis tool (only by some closed source emulators from what @trufae could find).
  • Implemented jump table analysis and pointer table size prediction, requires latest r2ghidra to work
  • Add /cu command to find UDS dispatch tables and pointers for CAN BUS handling firmwares
  • The new omd command makes creating memory layouts for embedded firmwares much easier, but at the end it's just a simplified version of om.
  • Add slurp:// uri handler which does the same as oom to reload the given disk file into a malloc:// which is ideal for loading firmware dumps with ram contents for proper emulation.
  • Fix PSW register bits definition for v850
  • Added default calling convention for v850e2-gcc

ARM64/Apple support

  • Android binary XML decoder available in the new pFa command (thanks @meme)
  • Added support for the new CoreSymbolication file format (thanks @mrmacete )
  • Support the latest dyldcaches from macOS/arm64 (thanks @meme)
  • Add core plugin using @Siguza 's arm64xref search code which is 200x faster than /r with capstone
  • Fixed large loading times and segfaults when loading some corrupted mach0 binaries
  • Improved ARM32 LDR esil emulation which may fix some missing xrefs

Analysis

  • New command: aaw, flag all words pointing to known flags
  • Float/Double/LongDouble types supported in pf [fFG] and wv[fFG]
  • Better handling errors when parsing invalid register profiles
  • Add =RS directive to define the default register size.
  • Assign pdc, pdd, pdg, pdz to their respective decompilers
  • Honor all asm.cpu values for the powerpc GNU disassembler
  • Added levenstein binary diffing path APIs
  • Improve pdc pseudo-decompiler output (show orphaned bbs) + pdcj support
  • Add support for new crypto keys on CPS2

Search

  • Add brand new implementation of ssdeep (by @trufae) under the MIT license.
  • Fix /ad command results are now correct and tested.
  • New sixref command (see siguza's plugin in the arm64 section)

Shell

  • Add lsr, whoami and uid commands
  • Move the Vlang rlang plugin from -extras to core. it's now stable and ready to use.
  • Add scr.loopnl to add a newline on all the @@ loops
  • Improved dmi commands to load more symbols in debugger mode
  • Fix #16254 - grep expression parse improvement ##cons
  • Add freebsd-x86-32 support for sflib based shellcodes with ragg2

Binaries

  • Added bin.cache as a high level value for io.cache
  • Add support for loading symbols from .gnu_debugdata sections on ELF binaries
  • Support latest dyldcache and coresymbolication files for macos-arm64 and ios
  • Fixed segfaults and large loading times on 6502, PYC, DEX, MACHO, ELF, DWARF formats
  • Dwarf information is now listed in the output of pdj and other CL listings

Visual

  • Add support for highlighting edges in graphviz and ascii graphs
  • Honor cfg.charset in w, ps, psz and psj (thanks @gogo2464 )
  • Add minigraph support in visual (check graph.mini)
  • Support multibyte input conversions in custom charset encodings
  • Improved glob expression text filtering (thanks @as0ler )
  • Implemented braile-art graph rendering (afbg)
  • Show status register bits in visual debugger mode

Build

  • Clarify license usage in target build for core modules and installed plugins (
  • Fix static builds with meson
  • Handle use_ssl, use_fork, use_dylib, nogrub, nogpl and custom plugin builds with meson
  • Cleaned up slow tests and make CI run in GHA in 8min
  • Import patches from Termux

Don't miss a new radare2 release

NewReleases is sending notifications on new releases.