Skip to content

4.5.0 Codename: Organized Chaos

Compare
Choose a tag to compare
@github-actions github-actions released this 18 Jul 14:50

Release Notes

Version: 4.5.0
Previous: 4.4.0
Commits: 426
Contributors: 58

Highlights

Analysis

  • Initial API for base type kinds (enum, struct, union)
  • Rename PowerPC to PPC
  • Improve RISC-V analysis for compressed instructions
  • Add endbr64 as a function prelude for x86-64 binaries
  • Improve BP vars/args detection
  • Detect register args used only by callee
  • Match args name/types from function definition
  • Improve itanium RTTI parsing and vtable search
  • Refactor Variables out of SDB
  • Implement basic concept of signature bestmatch

asm

  • Add support for WebAssembly SIMD extension
  • Boolify r_asm_is_valid and r_asm_set_syntax API
  • x86_64/x86_32: Implement assembler endbr32 and endbr64 instructions
  • x86_64: Support mov r64, 0xffffffffffffffff
  • x86_64: Fix mov r32, -imm32 encoding
  • Move inferior GNU Hexagon plugin to extras

bin

  • Apple Symbols file
    • Improve Xcode symbols parser
  • COFF
    • Improve relocation support on COFF file format
  • DEX
    • Fix several crashes when loading corrupted files
    • Performance improvements in DEX parsing
  • DWARF
    • DWARF 4 and 5 line parsing additions
    • Several improvements/fixes in parsing
  • ELF
    • Use Dynamic segment entries instead of sections to find relocations
    • Add support for BA2 ELF
    • Add support for relocation entries for AARCH64 and PPC
    • Print a warning when the entrypoint cannot be found and it is automatically set somewhere else
    • Make glibc heap commands faster by resolving main_arena symbol
    • Add support for glibc heap tcache pre/post glibc version 2.30
    • Add missing reloc definitions for C-SKY, RISCV and AARCH64
  • kernelcache
    • Fix rebasing offset
  • Mach-O
    • Fix symbol names truncation issue when dealing with overly long strings
    • Support arbitrary length identifiers
    • Fix relocations on ARM Thumb
    • Support Mach-O threaded binding for arm64e
    • Rebase and strip pointers on Mach-O arm64e
    • Fix parsing of objc class data pointer
    • Do not automatically set the entrypoint of libraries
  • PDB
    • Add support for multiple PDB symbol servers
    • Add function for reading PDB from buffer
    • Fix command injection on PDB download (CVE-2020-15121, advisory GHSA-r552-vp94-9358)
  • Pyc
    • Move to radare2 core repository and improve/clean it
  • PE
    • Fix crash when resolving corrupted ordinal exports
    • Speedup parsing PE exports

build

  • Various fixes for Haiku
  • Add support for binr/blob and fix android build in meson
  • Add --without-dylink configure flag to disable libdl features
  • Add Debian 8 Jessie to GitHub CI
  • CentOS tree sitter fix using gnu99 when available
  • Fix the static build by dynamically resolving libutil symbols
  • Add release Github workflow to create all the release artifacts
  • Introduce --without-r2r configure option to disable compilation of r2r

cons

  • Add VT sequences input support for Windows

crypto

  • Remove hardcoded supported encoders names (e.g. base64, base91, punycode)

debug

  • Fixes for windows debugger
    • Improve exception logging
    • Fix inconsistencies in killing/restarting a process
    • Fix detaching without killing debuggee
    • Expose exception reason for di

io

  • Add new fd:// (handle:// on windows) plugin
  • Support self:// plugin for Solaris and Haiku OS
  • Fix regression while loading large files (>2GB) on 32bit systems

lang

  • Fix C/Cpipe when non standard library paths are used
  • Implement RLang.spp for templated scripting
  • Move #!v out of core (it's now available via r2pm)
  • Fix usage of #!python, #rust, and #cpipe
  • Do not include C/cpipe RLangPlugins on windows

magic

  • Add Android boot image signature

socket

  • Fix socket connect with SSL

util

  • Move RAnnotatedCode API from r2ghidra to r_util so it can be reused
  • Refactor r_big for gmp and SSL
  • Remove unused RConstr API
  • Remove unused RRangeTiny API
  • Add support for weakref RStrBuf and add r_strbuf_setptr API
  • Add r_vector_fini and r_pvector_new_with_len API and add bound checks on all RVector APIs
  • Add support for n# in pfc
  • Add generic reference counting implementation

rabin2

  • Fix go detection in non-elf binaries

radare2

  • Config variables
    • Renamed variables
      • asm.jmpsub -> asm.sub.jmp
      • asm.var.submin -> asm.sub.varmin
      • asm.tailsub -> asm.sub.tail
      • asm.section.sub -> asm.sub.section
      • asm.var.subonly -> asm.sub.varonly
      • asm.regsub -> asm.sub.reg
      • asm.relsub -> asm.sub.rel
      • anal.in=raw -> anal.in=range
      • asm.bytespace -> asm.bytes.space
      • scr.ansicon -> scr.vtmode (only on Windows build)
    • New variables/options
      • anal.vars.stackname: (true/false) Name variables based on their offset on the stack
      • asm.bytes.right: (true/false) Display the bytes at the right of the disassembly
      • bin.str.enc=ascii is a new option
  • Commands
    • Add axv and afvx and afv= commands to visualize var R/W accesses
    • Add afvxj to print JSON output of afvx
    • Add dmia command to list all info of a target lib and accept more print modes in dmi
    • Fix invalid json output for drtj command
    • Add key to highlight and go-to highlighted text in graph mode
    • Add JSON print to /E command with /Ej
    • Add zb command to find n closest matching graph zignature
  • Initial refactoring to generate commands help automatically and support argv-style command handlers (e cfg.newshell=true)
  • Add API to print decompiled code
  • Optimize aao objc analysis
  • Display file associated to the current file in the visual title
  • Fix runaway scrolling in Visual mode after mashing down movement key on Windows Terminal
  • Add F9 continue key to ESIL

rafind2

  • Implement rafind2 -F to find the contents of the file

rasign2

  • Add dumping of FLIRT signatures to rasign2
  • Move main code to r_main

r2pm

  • Initial support for git tags in r2pm

Details

More details

This release could not be done without the help of several people, who
contributed with many fixes and improvements. Above you can only find some short
highlights of what was done in this release, but many more important changes
have been committed and you can find them in our git log.

Authors