Skip to content

5.9.0 - Codename "Hyperborean"

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 31 Mar 15:33
· 137 commits to master since this release

Release Notes

Version: 5.9.0
Previous: 5.8.8
Commits: 1316
Contributors: 65

curl -Ls https://github.com/radareorg/radare2/releases/download/5.9.0/radare2-5.9.0.tar.xz | tar xJv
radare2-5.9.0/sys/install.sh

Highlights

More details

Authors

ApkUnpacker Armin Weihbold Armin Weihbold Azox Begasus Chiller Dragon Dennis Goodlett Dennis Goodlett Dirk Eibach Dāvis Mosāns Erik Griese Francesco Tamagni François Revol GravisZro Hertatijanto Hartono Kacper Słomiński Lars Haukli Lazula Luc Tielen Luc Tielen Luc Tielen Madghostek Mewt R MewtR Michael Ortmann Murphy Nathan Nikolaos Chatzikonstantinou Omvpatil Pau RE Pikachu Rami ReWithMe Richard Patel RoboSchmied Sergi Àlvarez i Capilla Sylvain Pelissier Sándor Oroszi Tony O Tronciu Vlad Vasilyy Yiheng Cao Yuvraj Saxena aemmitt-ns ashamedbit astralia condret dvertx gogolovefish junchao-loongson kyufie lasek0 meme micronn neo-one0873 overmyerD pancake pancake phix33 ripatel-fd solid-snail syheliel toni yep zengwei2000

Changes

abi

  • Use RPluginMeta in RCryptoPlugin
  • Use RPluginMeta in RFS
  • Remove dead code
  • Initial deprecation of the current RAnalPlugin
  • Refactor show flags into single showMode bitset
  • Change return type for r_bin_dwarf_parse_aranges
  • Update signature of patch_relocs callback
  • Make r_cons_grep_expression public, rm r_cons_grep_process
  • Rename r_str_next_split -> r_str_tok_next; make public
  • Remove grep for 570 (all fixed), update older R2_580 to 590
  • Rename REsil.address -> .addr for consistency
  • Remove several R2_590 ifdefs
  • RArch now depends on REsil
  • Use RPluginMeta in RArchPlugin

anal

  • Fix #22552 - Fix variable access direction for arm64 store instruction
  • Fix aac bug caused by anal.in on binaries with sections
  • Add anfl command and anal.slow to bring back the old autoname functionality
  • Improve sigdb file format detection
  • Run .afna@@c:afla in aaaaa
  • Implement afba like afla but for basic blocks
  • Implement afla command to list function in the inverse call dependency order
  • Parse len argument in aaex
  • Initial support for xref sizes
  • Use base64 in "ax," and also show ref size column
  • Implement axt, - for table listing xrefs
  • Implement axtf - list function xrefs
  • Improve aan/afna/afns add json and use emulation
  • Permit partial block reads on analsearch loops
  • Remove noisy log message in aap
  • Add scr.analbar config var to have progressbar without scr.demo
  • Fix ap command using real fcn prelude info from arch plugin
  • Implement aax command to make a function on each CALL xref
  • Implement aaex command, like aae, but does not analyze any function
  • Fix /rc, document argument handling and add test
  • Improve JSON output for the afsvj command
  • Implement afsvj command
  • Implement afs- to delete a function signature
  • Implement r_anal_function_del_signature
  • Consider null bytes as invalid instructions too
  • Support 'aaa' in frida:// targets
  • Initial backtrace API and commands (abt)
  • Another improvement for aaaa
  • Take invalid instructions in consideration for the bitfield decoding
  • Implement aobv command for visual instruction decoding
  • Show function colors in afl
  • Plant the seed for the tlocal bool in RAnalOp
  • Fix warning in aar when checking icod refs on unallocated memory
  • Implement CL+ and CLf, show info in afi/afij
  • Dont fall into calls surrounded by traps
  • Better (more verbose) output for aaaaa
  • Add Cb - bind metadata type to draw reflines for data pointers
  • Add progressbar in 'aaa' when scr.demo is set
  • Show bb->esil in ab and abj
  • Add 'afbd' to emulate bb regstates in the correct order
  • Add RAnalBlock.esil and abe command to manipulate it
  • Initial support for D calling convention
  • Add r_anal_function_get_graph
  • Add two missing log lines for aaa
  • Implement more swapped conditionals support in type propagation
  • Refactor aaft to use less allocations for buffer
  • Sort blocks only once in aaft
  • Reuse more allocated memory during aaft
  • Add test for a bug spotted in the aac command
  • Cleanup rebasing refs during oo
  • Add r_anal_xrefs_has_xrefs_at function
  • Remove duplicate xrefs delete function
  • R_API function to count xrefs at a specific address
  • Cleanup xrefs code
  • Optimize xrefs using swisstable
  • Reimplement the a2f core plugin into an analysis one
  • Analyze methods after parsing the C++ vtables
  • Fix #22100 - Dont compute disp refs when ptr is set
  • Honor anal.jmp.ref in aar
  • Compute depth and save it in the bb
  • Save a bit of memory in xrefs implementation
  • Fix timeout and move possible slow test
  • Skipping empty blocks is now a warning
  • Show color field in the afbj output
  • Accept asm.bits=16/asm.os=android for syscalls + tests
  • Reduce false positives when scanning for syscalls on thumb code
  • Honor codealign, speedup syscall search emulation
  • Add anal.imports to analyze them early in aa
  • Honor RArchInfo.codealign in aar
  • Honor 'rsym.' flag prefix
  • Implement the abc- command to unset a bb color
  • Minor optimization in r_anal_block_op_starts_at
  • Use r_anal_ref_typemask() to sanitize xref types and update tests
  • Add and use the new Indirect Code XREF type to improve code coverage
  • Add the new r_anal_data_type() for better data type detection
  • Smol ref->type masked improvements
  • Add more function preludes for arm32
  • Fix some missing xrefs in /re $$
  • Handle 'asm.os=android' syscall as an alias for 'linux'
  • More verbose and clearer output for abl
  • Add RAnalFunction.traceCoverage() api and info in afi/afl/abi/..
  • Minor bugfix/improvement when ninstr == 0
  • Dont show function diff info when not diffing
  • Don't add more instructions than the ones we can handle in the basic blocks
  • Faster RAnal.bbTrace()
  • Add afix subcommand to list function info + xrefs
  • Add all-xrefs listings in 'afi' and 'afij'
  • Optimize: reg 32 <-> 64 conversion iterates over gpr only
  • Optimize anal.roregs
  • anal.gp also sets the reg value
  • Do not accept invalid xrefs (-1 <-> -1)
  • anal.strings does not disable bin.strings
  • RAnalValue no longer refs an RRegItem

analysis

  • Fix #22552 - Fix variable access direction for arm64 store instruction
  • Fix aac bug caused by anal.in on binaries with sections
  • Add anfl command and anal.slow to bring back the old autoname functionality
  • Run .afna@@c:afla in aaaaa
  • Implement afba like afla but for basic blocks
  • Implement afla command to list function in the inverse call dependency order
  • Parse len argument in aaex
  • Initial support for xref sizes
  • Use base64 in "ax," and also show ref size column
  • Implement axt, - for table listing xrefs
  • Implement axtf - list function xrefs
  • Improve aan/afna/afns add json and use emulation
  • Permit partial block reads on analsearch loops
  • Remove noisy log message in aap
  • Add scr.analbar config var to have progressbar without scr.demo
  • Fix ap command using real fcn prelude info from arch plugin
  • Implement aax command to make a function on each CALL xref
  • Implement aaex command, like aae, but does not analyze any function
  • Fix /rc, document argument handling and add test
  • Improve JSON output for the afsvj command
  • Implement afsvj command
  • Implement afs- to delete a function signature
  • Implement r_anal_function_del_signature
  • Consider null bytes as invalid instructions too
  • Support 'aaa' in frida:// targets
  • Initial backtrace API and commands (abt)
  • Another improvement for aaaa
  • Take invalid instructions in consideration for the bitfield decoding
  • Implement aobv command for visual instruction decoding
  • Show function colors in afl
  • Plant the seed for the tlocal bool in RAnalOp
  • Fix warning in aar when checking icod refs on unallocated memory
  • Implement CL+ and CLf, show info in afi/afij
  • Dont fall into calls surrounded by traps
  • Better (more verbose) output for aaaaa
  • Add Cb - bind metadata type to draw reflines for data pointers
  • Add progressbar in 'aaa' when scr.demo is set
  • Show bb->esil in ab and abj
  • Add 'afbd' to emulate bb regstates in the correct order
  • Add RAnalBlock.esil and abe command to manipulate it
  • Initial support for D calling convention
  • Add two missing log lines for aaa
  • Implement more swapped conditionals support in type propagation
  • Add test for a bug spotted in the aac command
  • Reimplement the a2f core plugin into an analysis one
  • Analyze methods after parsing the C++ vtables
  • Fix #22100 - Dont compute disp refs when ptr is set
  • Honor anal.jmp.ref in aar
  • Compute depth and save it in the bb
  • Save a bit of memory in xrefs implementation
  • Fix timeout and move possible slow test
  • Skipping empty blocks is now a warning
  • Show color field in the afbj output
  • Accept asm.bits=16/asm.os=android for syscalls + tests
  • Reduce false positives when scanning for syscalls on thumb code
  • Honor codealign, speedup syscall search emulation
  • Add anal.imports to analyze them early in aa
  • Honor RArchInfo.codealign in aar
  • Honor 'rsym.' flag prefix
  • Implement the abc- command to unset a bb color
  • Minor optimization in r_anal_block_op_starts_at
  • Use r_anal_ref_typemask() to sanitize xref types and update tests
  • Add and use the new Indirect Code XREF type to improve code coverage
  • Add the new r_anal_data_type() for better data type detection
  • Smol ref->type masked improvements
  • Add more function preludes for arm32
  • Fix some missing xrefs in /re $$
  • Handle 'asm.os=android' syscall as an alias for 'linux'
  • More verbose and clearer output for abl
  • Add RAnalFunction.traceCoverage() api and info in afi/afl/abi/..
  • Minor bugfix/improvement when ninstr == 0
  • Dont show function diff info when not diffing
  • Don't add more instructions than the ones we can handle in the basic blocks
  • Faster RAnal.bbTrace()
  • Add afix subcommand to list function info + xrefs
  • Add all-xrefs listings in 'afi' and 'afij'
  • Optimize: reg 32 <-> 64 conversion iterates over gpr only
  • Optimize anal.roregs
  • anal.gp also sets the reg value
  • Do not accept invalid xrefs (-1 <-> -1)
  • anal.strings does not disable bin.strings
  • RAnalValue no longer refs an RRegItem

api

  • Implement RFile.newf()
  • Expose call as as a public r_core_cmd_call_str_at
  • Boolify the RCore.yank
  • Deprecate r_bin_get_fields
  • Make r_debug_num_callback internal and remove two R2_590
  • Use RPluginMeta in RLangPlugin
  • Rename RCons.chop() into .trim()
  • Rename RStrpool.ansiChop to ansiTrim()
  • RFlag.free() must return void
  • Use RPluginMeta in RBinPlugins
  • RBinPlugin.loadBuffer() -> load() .. and checkBuffer() too
  • Add .help() callback for the RCoreBind
  • Keep RCons.strcat defines for backward compat
  • Implement the new RAnal.cmd()
  • Eliminate RBin.a2b()
  • Deprecate r_anal_op_hexstr()
  • Ship our own thread safe and portable r_str_tok_r in r_util
  • Move the base36 api from .h to .c
  • Delete unused r_cache from rutil

arch

  • Implement 'wao recj' for 'tbz/tbnz' arm64 instructions
  • Fix assembling 'mov ax, bx' for x86-16
  • Add Initial Support for assembling ARM MTE Instructions
  • Fix type confusion in pyc
  • Fix infinite loop exposed in iaito when selecting mcore
  • Add support for compressed nops in riscv
  • Add support for fslsp/QorIQ
  • Fix some op types m680x
  • Pre-fill op type depending on insn group info m680x
  • Fill more op fields in m680x
  • Strip some special chars for intel syntax in m680x
  • Fix registers description for m680x
  • List valid CPUs for m680x, specify endianness
  • Add UB check in the loongarch decoder
  • Add RArch.esilCb() and register a new op for x86
  • Implement r_arch_find() and use it from CoreBin
  • Fix arch.riscv.vs plugin (decoding always failed)
  • Move the brainfuck arch platform description into a script
  • Add missing space after comma in 6502 disasm
  • Implement arch.platform eval var + nes scripts
  • nds32: Fix esil for sethi, dummy BP for the regprofile and fix rcall/ret5
  • Initial register profile definition for nds32
  • Implement esil expressions for some nds32 instructions
  • Add "intel" syntax support for the nds32 plugin
  • Implement 'add r#, K' in the x86 assembler
  • Initial support for nds32
  • Update arch from Config while finding best matches
  • Fix rasm2 -a arm.v35 tests on x86
  • Define more op.type for pyc
  • Fix #22061 - Add 'auipc' instruction for the RV64 assembler
  • Properly define the conditional software interrupts
  • Improve SPARC control flow and code coverage
  • Fix bad esil on arm32 shift-reg instruction
  • Uncomment the new R_ARCH_INFO enum replacing R_ANAL_ARCHINFO
  • Handle xrefs from vector instructions on x86
  • Migrate the LAST and final boss X86 plugin
  • Unsigned capstone init option only for x86
  • Improve plugin resolution
  • Mark init, fini, and decode arch callbacks as const
  • Remove global state from qjs plugins
  • Fix division by zero when pcalign is 0
  • Fix sparc.{cs|gnu} endian behaviour and add tests
  • s390 b instruction in an UJMP because it depends on a reg
  • Mark java tests as broken until the arch refactor is done
  • Unify the invalid instruction behaviour
  • Make all arch plugins const (better perf)
  • Remove global state from arm gnu plugin
  • Removed deprecated variable for gb plugin
  • Migrate arm_cs plugin
  • Migrate dalvik plugin
  • Migrate 8051 plugin
  • Migrate libr/asm/arch/include
  • Migrate the mips.cs plugin
  • Migrate the AVR plugin
  • Migrate the arm.gnu plugin
  • Migrate the gameboy plugin

asan

  • Fix oobread in the java disassembler

asm

  • Fix linenum error message when failing to assemble
  • Use a hashtable fo the .equ rasm2 directive
  • Null deref in rasm2
  • Deprecate r_asm_op_get_buf and make r_asm_code_equ_get public

bin

  • Expose numeric reloc type for PE, NE, LE, BFLT, MACH0 and ELF in ir and irj
  • Rebase LE objects independently
  • Implement R_X86_64_DTPOFF64 reloc type for ELF
  • Implement R_X86_64_DTPMOD64 reloc for type for ELF
  • Fix #22742 - Implement R_X86_64_TPOFF64 reloc type for ELF
  • Fix 'reloc conversion failed' on some ELFs
  • Fix #22737 - Honor endianness in ih for elf + tests
  • Fix LE sections sizes and add zerofills
  • Fix handling of LE cross-page relocs
  • Fix entry point field name discrepancy in .ih* between 32bit and 64bit ELF
  • Support arm64 type 1026 relocs
  • Patch relocs in LE
  • Implement irqq and move the command handler out of the subcommand loop
  • Do not report bad imports addresses in elf objects
  • Better logging for unsupported arm64 elf relocs
  • Initial import of the RBin.io plugin
  • Improve uricheck to avoid bin.relocs.apply mess things up
  • Support unlimited buffer size for PE format
  • Fix kernelcache sections vaddr offset
  • Fix rebasing of dyld cache pointers at page boundary
  • Add support for iOS Simulator dyld caches
  • Fix/respect bin demangle macho c++ bins v3
  • Walk Mach-O exports from LC_DYLD_EXPORTS_TRIE too
  • Update pyc magic detection
  • Fix #22539 - Remove 2044 max hard limit in string scan
  • Implement the ciE command to compare exports between two objects
  • Add initial support for vsf dialect produced by C64 Debugger app
  • Handle ^C when loading/filtering symbols just in case
  • Use RBinName in RBinSymbol
  • Support coff objects
  • Fix security issues in coff plugin
  • Support XCOFF entrypoint and imports via loader
  • Fix how local symbols are matched to images in dyldcache
  • Allow images to be repeated with different names in dyldcache
  • Fix "alien dep" infinite loop carving deps in dyldcache
  • Basic XCOFF32 section handling
  • Support WinNT RISC COFF and AIX XCOFF32
  • Support DWARF section names for XCOFF64
  • Refactor ih outside the awful i loop, add ihh and fix ihq/ihj..
  • Improve RBinField to hold and expose the value in the flag names
  • Fix pf format size warnings in .ih* for ELF
  • Use RBinName for RBinClass too
  • Add support for list-of-lists in ObjC class parsing
  • Fail loading dyldcache if not using dsc://
  • Move dyld cache rebasing logic to io plugin
  • Improved ia tests and trim trailing spaces in strings
  • Refactor to use RBinName for RBinField(s)
  • Use RBinPlugin.symbolsVec() in Kernelcache
  • Handle R_KERNELCACHE_FILTER env in RBin.kernelCache
  • Deprecate addrline2, it's only used internally
  • Implement iSqq and iSSqq commands
  • m68k is 32 bit
  • Fix entry point determination and info for HUNK file parser
  • Revert "Initial part of a large refactoring using RBinName, unified attributes
  • Fix bin.limit for macho imports
  • Initial part of a large refactoring using RBinName, unified attributes
  • Handle Kotlin as an alias for Java in icc classdump
  • Initial implementation of RBinName and RBinAttr
  • Handle Swift demangling for __C. symbols
  • Hide visibility string if empty and show more Swift super-classes
  • Parse Swift super classes
  • Parse Swift field types
  • Fix symbol range bug in isq.
  • Support symbolic symbols in the swift demangler
  • Reintroduce RBinPlugin->{init/fini} for plugins that need to initialize a third party global runtime
  • Initial implementation of iic and improved symclass
  • Import safetiness symbol name database from iaito
  • Show base address associated with the binobj in obj
  • Handle more builtin types in the swift demangler and be more flexible
  • Faster ASAN CI by improving parsing checks in LE bins
  • Add C++ classdumper
  • Fix warning spotted in latest gcc failing msvc demangler
  • Prepend dynamically loaded bin plugins befor static bin plugins
  • Implement ick to dump classes in k=v form
  • Implement Swift formatter for icc and change some objc things
  • Fix header miscalculation
  • Introduce some memleaks in order to fix ownership later and avoid UAF now
  • Add support for qdsp6 elf relocs
  • Add test and avoid double path concats in some dwarfs
  • Honor baddr in the dwarf parsing
  • Some more code cleanup in the swift metadata parser
  • Demangle Swift methods and support __s types
  • Detect nds32 arch in ELF binaries
  • Support demangling swift types
  • Demangle Swift superclass names earlier and laterer in the popaline
  • Don't push NULL into the klass->super empty list
  • Add ic+/ic- to register new classes and methods
  • Shrink dynstr section size to file bounds if needed
  • Fix null deref in the ELF parser when dynstr section is too large
  • Bring back the bin.cache, and warn about bin.relocs.apply too
  • Support RVec in mangling/swift
  • Demangle dynamic attributes for Swift
  • Move dyldcache symbols to symbols_vec
  • Fix uninitialized mach0 opts in dyldcache loading
  • Fix type confussion bug in the RBin.loadLangs()
  • Remove the boffset callback from the ninds and z64 plugins
  • Remove init/fini from RBinPlugin
  • Remove unnecessary arguments to RBin.loadBuffer()
  • Fix early bail out in dwarf-only Mach-O symbol parsing
  • Revert buggy "Fix ub in macho classparsing" and add test
  • Take .got and .rela.plt into account as wordable sections
  • Rename RBinFile->o => RBinFile->bo
  • Fix visibility of r_bin_class_{new/free}
  • Fix #22096 - Stop on zero vernext for ELF
  • Optimize mach0 va2pa by using vec
  • Don't load macho segments over and over, use vec
  • Fix #16531 - vaddr of strings in kernelcaches
  • Fix canary check in mach0 binaries
  • Fix elf tests
  • Use symbols_vec in the ELF parser
  • Improvements on the rust and c++ mangling detection
  • RBinSymbol api now works with RVec for mach0
  • Fix #22080 - Segfault in xtr.sep64 parser
  • Add support for PT_OPENBSD_NOBTCFI in the ELF parser
  • Deprecate RBin.isString() API
  • Initial public vector api for rbin
  • Add RABIN2_NOFUNCSTARTS env var to speedup macho parsing ignoring the FUNCSTART info
  • Handle bin.limit in ELF and support strings, imports, ..
  • Warn when finding compressed dwarf sections
  • Honor io.va in class/method/field listing
  • Add bin.limit eval var and use it for macho
  • Fix ELF variable scope UB issue causing asan CI to fail
  • Introduce RBinImport.lsymbol and move the rsym. logic from core
  • ElfObject now takes a user-defined base address
  • ELF's .rel.plt is also a wordable section
  • More debug logs and less strictness in the ELF parser
  • Dont show the demangled relocs when no name in json
  • Fix null deref in the dyldcache parser
  • Use the internal RVector in mach0.vapa
  • Rename internal function
  • Import the bin.pcap plugin from extras
  • Support bin details from non-arch bin files
  • Use more overlay for relocs
  • Make RBinSymbol.clone() API public
  • The addr2line function, now also returns the column
  • Unresolved elf symbols are now debug logs
  • Use ut64 for bin bind offsets

bin"

  • Revert "Initial part of a large refactoring using RBinName, unified attributes

bug

  • Fix invalid macro identifiers in r_print

build

  • Fix #22745 - Fix Android static builds and autodetect NDK on Ubuntu
  • Honor --prefix in /sys/install.sh
  • Fix static linking on macOS
  • Add --disable-debugstuff to build without R_LOG_DEBUG, ^C and other stuff
  • Less default plugins for the custom meson
  • Fix regression in capstone 5.0.1 (--with-syscapstone)
  • Support static linkages via pkg-config
  • Add --without-syscapstone commandline flag, needed for asan
  • Fix mrproper on BSD systems (max args for rm)
  • Add support for cs5 and csnext
  • Initialize xtensa_default_isa to fix clang's linker bug
  • Honor nogpl for xtensa in the meson
  • Use capstone-5.0 release tarball (instead of 4.0.2)
  • Use realpath to force absolute path in sys/install.sh prefix
  • LZ4 removal for make and meson, relates to #19849
  • Use relative includes instead of assuming libr/arch/include
  • Haiku have ptrace but not sys/ptrace.h
  • Fix 'missing setsockopt' issue on HaikuOS

ci

  • Add copilot support for pull requests

config

  • PDB server list is now space separated instead of using semicolons
  • Rename asm.usercomments to asm.cmt.user
  • Check cons->line is there in scr.demo setter
  • Introduce bin.relocs.apply config var

cons

  • Revert "Minor optimization by avoiding one unnecessary clearline in the dietline
  • Minor optimization by avoiding one unnecessary clearline in the dietline
  • Add log.cons option to log errors through the RCons buffer
  • Add missing r_cons_canvas_goto_write
  • Make it possible to use Enter to submit the command in dietline vi-mode
  • fix minor bugs
  • simplify code
  • Implement vi horizontal motions (f/F & t/T) + more di (delete in) vi commands in dietline
  • Implement ~ (swap case) dietline vi-mode command + fix color bug in prompt
  • Refactor d (delete) commands and implement c (change) commands in dietline vi-mode
  • Fix word deletion bugs in dietline vi-mode
  • Improve dietline vi-mode word motion commands (b, e, d)
  • Make behaviour of some dietline vi commands closer to vim's
  • Don't print empty lines via io.system
  • Make r_cons_pal_parse to always return ansi + RColor
  • Fix XML indent
  • Initial support for sixel graphics
  • VC and VVC rotate over 0,1,2,3 values in scr.color
  • Support bold attribute for the scr.html filter
  • Minor scr.demo improvements on startup
  • Implement the golden platinum shiny prompt
  • Fix ~{}~foo grepping indented json
  • Rename gui.alt_background -> gui.background2
  • Fix RCons.pal varnames to make them all follow the same syntax
  • Add ec func_var_name in the color palette
  • Disable the RConsMark api because getCursor is too slow
  • Add the monochrome theme
  • Free cons context marks during deinit
  • Better default colors that works for light and dark terminals
  • Initial implementation of the RConsMark API
  • Eliminate some globals

cons"

  • Revert "Minor optimization by avoiding one unnecessary clearline in the dietline

core

  • Use size or vsize consistently in iS.
  • Fix iS. paddr vaddr confusion
  • Add sd command to show the delta seek relative to different bases
  • Faster RCoreCall via RCoreCmd
  • Add more RCore.cmd_at() variants
  • Remove global state in visual UI
  • Refactor structure of metadata for core plugins
  • Fix removing core plugins from Lc after L-
  • Only have 1 generic qjs plugin
  • Add cursor mark to ds_print_data_type
  • Add cons mark for cursor in ds_print_show_cursor
  • Add column info to print_meta_offset
  • Add hello world text box on visual refresh
  • Expose injprot value in bin_info
  • Speedup plugin loading and startup times
  • Add the new RCore.cmdCallAt() and cmdfAt() APIS

crash

  • Fix #22767 - Some UB when malloc(0) in RBuffer api
  • Dont use the COFF symtable if the initalization fails
  • Fix segfault when loading a python rlang plugin after a qjs one
  • Dim symbol and section count to avoid future coff issues
  • Add null terminator in symbol name union, fixes two tests
  • Add test for the fuzzed coff file
  • Fix large offset passed to the pascal demangler
  • Fix double free in the io.gprobe plugin
  • Fix oobread on the inline metadata used in disasm
  • Fix another oobread in the nds32 disassembler and add tests
  • Fix index out of bounds in the nds32 disassembler
  • Fix heap buffer overflow in the mach0 parser
  • Fix oobread in dalvik disassembler
  • Fix negative index and oobread in array in pyc
  • Fix negative realloc in the ELF parser
  • Fix 1 byte oobread in the h8300 by defining the archinfo details
  • Fix 1 byte overflow in pyc parser
  • Use the safe r_str_scanf instead of scanf to parse gdb profile
  • Fix op_pos oobread crash in ollvm'd binary
  • Fix #22523 - 1 byte oobread in the java disassembler
  • Fix #22349 - oobread in xnu kernelcache
  • Fix #22333 - Fix oob index in global variable for nds32
  • Fix #22334 - oob index in global for nds32 causing segfault
  • Improve the situation in the non-null terminated string handling in mach0land
  • Fix oobread in the ELF parser. Spotted by clusterfuzz
  • Fix null deref assert in pdj
  • Fix #21970 - Null checks in the R_LOG api
  • Fix crash in emu.ssa reproducible even when disabled
  • Fix oobs in the java parser, use RLOG and stop earlier

crypto

  • Add json and hexpairs output to encryption modes in rahash2
  • Support numeric seed/key values via rahash2 -S and honor endianness via -e

debug

  • Fix the fix for dmh after ood
  • adapt get_main_arena_offset_with_relocs to different libc versions
  • Fix #22667 - do not call drx() on non-intel chips
  • Add new way to resolve main_arena
  • Refactor resolve_glibc_version, improve libc regex
  • Fix call to thread_set_state in armv7
  • Fix armv7 build for xnu native
  • Avoid failing reg read if conversion fails on xnu native
  • Fix thread_set_state on arm64e
  • Improve argument parsing for the dmp command
  • Fix #22563 - fix 'cannot assemble' in dmp, using egg shellcodes
  • Autodetect libc version and support manual specification
  • Import the debug.evm plugin from radare2-extras
  • Fix bad parsing, uaf and other crashes in the dts command
  • dcco steps over the function call after finding the call
  • Fix bitsize when listing regs via ar=
  • Debug plugin fallbacks
  • Add the missing bp.null plugin
  • Assume sysgdb:// implies -d
  • Add support for macos-x86-64 in sysgdb://
  • Initial support for arm64 via lldb (local and remote) in sysgdb://
  • No warnings when /proc/pid/maps is not available on remote gdb targets
  • Revert "Dont dupe map file and name if not necessary
  • Dont dupe map file and name if not necessary
  • Prefix 0x hex values in drr
  • Fix dptj and add dpt? help match
  • Implement 'dpq' command to just show the current pid
  • Add dbg.glibc.path eval var to override magic guessing
  • dce is no longer a windows-specific command
  • Refactor r_debug_trace_list
  • Store tracepoints in vec
  • Migrate rv32ima plugin
  • Migrate gdb plugin
  • Migrate winkd plugin
  • Migrate qnx plugin
  • Migrate bochs plugin
  • Store current debug plugin session, migrate plugin
  • Improve naming for callback functions to reduce confusion
  • Add cleanup of plugins
  • Redesign plugins to have user data
  • Add RRegType "privileged" and use it from the gdb profile

debug"

  • Revert "Dont dupe map file and name if not necessary

diff

  • Analysis diffing warnings are now debug messages
  • Implement EXPERIMENTAL radiff2 -T to analyze bins in parallel
  • Handle one more level of -A in radiff2

disasm

  • Fix #22576 - Add esil object in pdJ with detailed info
  • Dont show asm.emu comments when asm.comments is off
  • Rename asm.calls to asm.cmt.calls
  • Fix glitch in asm.bytes.space
  • Implement pdsq and pdsfq commands. Improve help message
  • Fix glitch when asm.bytes.space+asm.bytes.align+asm.nbytes%2
  • Improve asm.offset.relto only via pd
  • Avoid double disasm in some situations
  • Emulate previous basic block instructions when emu.bb is set
  • Implement emu.bb and honor it in pd
  • More stable asm.indent, but still experimental
  • Add asm.flags.inoffset
  • Add asm.flags.prefix (true by default)
  • Show basic block color even if asm.trace is false
  • Show noreturn attribute in the function signature
  • Add asm.lines.limit config variable to hide asm.lines if disasm is larger
  • Fix glitch + tests asm.bytes.{align,space}
  • Improved unaligned cases in the listings
  • Add asm.trace.{stats|color} and better trace visualization in graph and disasm

doc

  • Update rax2 manpage and fix help
  • Add r2pipe2.md RFC
  • Extend the manpage reader to support more attributes
  • Update manpage for rasign2
  • Update ESIL manpage
  • Update rafind2 manpage
  • Update documentation for macOS/arm64e
  • README: Fix unit tests target after fd9f8d6
  • Add r2diaphora reference in the readme

emulation

  • Implement arAj and show help in arA?
  • Fix aesou - not stop on calls and properly parse argument
  • abpe now runs the commands and old abpe is now abpe*

esil

  • Add the esil.forth plugin to support the basic ops for the language to work
  • Initial implementation of the ESIL compiler in the ae! command
  • Move esil2c from core to libr.esil
  • New command 'aeae', like aea, but taking an esil expression as argument
  • Add '= ' and ':= ' esil ops as a workaround for ae oneliners
  • Implement dre/are to list regs in esil format
  • Add loopcounts to ESIL trace
  • Remove global state for old callbacks
  • Reintroduce r_esil_plugin_remove to satisfy generic plugin management in core
  • Fix esil_plugin_remove
  • anal->esil can't be null now, improve default initialization
  • Improve aesue feedback and add tests
  • Fix 'ae 1,xmm0,=', bug in '=' esil op with 128bit regs
  • Fix x86 XOR ESIL for 64bit registers
  • Fix #22029 ESIL for REP[Z] RET
  • Fix esil plugins by removing leftover and adding aeL command

fix

  • Fix mnemonic output in m680x plugin

fs

  • Expose ownership and permissions to the posix filesystem
  • Show error when unmounting not mounted mountponts

globals

  • Remove globals from bin.avr

graph

  • Fix graph title not current
  • Honor colors in graphviz output
  • Add graph.bb.maxwidth eval var and VV[] keys to adjust it
  • Use VisualMark in the interactive graphs
  • Honor pal.title color in the interactive graph
  • Add '%' key in the interactive graph to hud over function code
  • Fix segfault and wrong graph layout in aegv

hash

  • Add missing authors for the crypto plugins, update manpage

io

  • Add dyld shared cache rebase info v5
  • Fix potential double free in io_map_overlay and io_treebuf
  • Bring seek error back to UT64_MAX in dsc
  • Fix #22269 - RAP seek over 2GiB
  • Support whole address space for IO
  • Show error when user applies relocs on urified ios
  • Remove unused undo field in RIOPlugin
  • Fix r_io_v2p
  • Revert "Large null:// allocation causing negative pointer issues on iobank
  • Improve map tying support
  • Move dyld cache rebasing logic to io plugin
  • Add dsc:// io plugin for dyld cache
  • Adjust map boundaries on RIODesc resize
  • Assure map boundary sanity on creation
  • Faster frida://0 startup times
  • Add gprobe:// flash commands
  • Properly handle gprobe:// Print-messages
  • gprobe:// receiving is fixed, so checksums can be verified
  • Make sure that gprobe:// data is completely sent before receiving
  • Fix gprobe:// serial port setup, so no CR/LF conversion happens
  • Implement :j for ihex:// (json info)
  • Implement :i in ihex:// to generate a new ihex
  • Add system callback for the ihex:// plugin to get the written ranges
  • Fix infinite loop in io.ihex
  • Honor r2 -n with frida:// targets
  • Add x86-32 support to sysgdb://
  • Initial import of the sysgdb:// plugin
  • Implement r_io_bank_get_byname and the omnb= command
  • Implement the new cyclic:// plugin
  • om handles the '.' as an alias for the current fd
  • Implement "o=num|flag" to change current fd
  • Implement o** and om** to jsut get the flags
  • Fix io.seek bug in self://
  • Relax =+rap://ip/ (missing file) assert check
  • Fix type of enabled field in io cache
  • Refactor structure of metadata for io plugins
  • Fix memory leak with cleaning up qjs io plugins
  • Implement qjs bridge for r2frida via io->system
  • Add r_io_bank_get_region_at and r_io_get_region_at
  • Harden some makros
  • Add map overlay support to r_io_bank_write_to_submap_at
  • Add r_io_map_drain_overlay and r_io_drain_overlay
  • Some hardening for r_io_map_write_to_overlay
  • Deprecate RIORelocMap; Introduce RIOMap overlay
  • Add wc--* command to purge all cache layers
  • Redesigned IO cache with layers
  • Fix bug in io_treebuf plugin
  • Add r_io_{desc/fd}_system
  • Switch to the new io cache implementation, remove old code

io"

  • Revert "Large null:// allocation causing negative pointer issues on iobank

js

  • Add JSON output to /e
  • Honor cfg.json in axt and other a subcommands
  • Honor cfg.json.num in pj_n too
  • Upgrade r2papi to the latest 0.2.2 adding Process and Module objects
  • Only show fields and methods json objects if not empty
  • Improve Ldj and Lcj outputs

json

  • Add JSON output to /e
  • Honor cfg.json in axt and other a subcommands
  • Honor cfg.json.num in pj_n too
  • Only show fields and methods json objects if not empty
  • Improve Ldj and Lcj outputs

lang

  • To use r2pipe-ts we depend on nodejs, so ts scripts need node now
  • Implement r2pipe on the r2js lang plugin
  • Use the core api to run home scripts and handle more extensions
  • Fix nim and typescript plugins
  • Implement r2.callAt and speedup r2.call for the qjs
  • Fix js warnings when R2_DEBUG_NOPAPI is set
  • Expose the global 'ptr' function like in Frida
  • Update r2papi.ts to 0.1.2: add new apis
  • Add js example converting json zignatures into r2 scripts
  • Add r2.syscmd and r2.syscmds for lang.qjs
  • Support qjs.io.close callback
  • Add initial support for writing IO plugins in QJS
  • Refactor qjs code
  • Allow N > 5 qjs plugins
  • RLangPluginInit now returns bool

optimization

  • Slight code improvement for init_ehdr

panels

  • Add 'Full Version' entry in the help menu

perf

  • Inline sdb.hash improve performance in hash

port

  • Fix MSVC Arm support
  • Fix archos detection on AIX
  • Portability fixes
  • mangling/microsoft: Fix dollar in identifier
  • AIX configure support
  • Don't use /dev/stderr
  • Fix lock_init sym collision on AIX
  • Add AIX config support

print

  • Add colors and improve the pie chart rendering a bit
  • Add pf2 using util/format2.c as wip refactoring
  • Fix hexdump with half rows filled and pairs=false
  • Fix inter basic block goto loc in pdc
  • Implement afsv command to visualize function signature with given args
  • Implement pv1d vs pv1u
  • Reduce cache misses in JSON parsing apis
  • Implement pso in sync with /az to search strings constructed with code
  • Implement pvd command (pv2d, pv4d), like pv, but in decimal
  • Add support for 16 and 32bit pascal strings
  • Implement p8d command to print bytes in decimal
  • Implement psn command to print string until newline

r2pm

  • Fix r2pm on some windows (packages contain \r\n instead of \n
  • Make R2PM_PLUGDIR point to the system directory in global mode
  • Add support for R2PM_CONFLICT
  • Dont load r2 plugins when called from packaging
  • Add R2PM_LIBDIR env var
  • Fix update requirements to make startup faster
  • Make -U implicit when there's no dbdir cloned yet
  • Don't reinstall pkg dependencies when not doing clean installs if thay are already there
  • r2pm -t now tags tags/commits and it's now strict
  • R2PM_SUDO + SUDO just in case
  • Set library path for r2 prefix and r2pm prefix in r2pm -r
  • Deprecate the wordish arguments in r2pm

r2r

  • Load plugins when running extra tests
  • Add R2R_TIMEOUT env for r2r and use it from the CI
  • Add missing error code checks in chdir calls

rax2

  • Add RPrint.binFromStr and RStr.binstr2bin and RStr.binstr2str

refactor

  • Renaming r_num_get_float to r_num_get_double
  • Make clear that r_return* is a macro!
  • elf_init: Clean up the code a little bit
  • Use .inc.c in libr/core

reg

  • Implement 24bit regwrite support
  • Add =TR to reference the thread register in the register profile
  • Optimize r_reg_cond_from_string
  • Add GP and RA register alias names

sdb

  • Fix undefined behavior in swisstable impl

search

  • Add support for globbing flags for search.in
  • Honor search.badpages in RCore.analSearchXrefs
  • Add search.named option (disabled by default)
  • Improve syscall search results on x86 (/as)

shell

  • Support using the question mark in rlang plugin calls
  • Add base64 for CC (not only CCu)
  • Add "b=" command as an alias for "b "
  • Handle ^F and ^B in RCons.less
  • Handle -jv and make that logic generic across all tools
  • Make rahash2 -qc really quiet (report only via return code)
  • Support internal files in the tac command
  • Bring back the multiline macro support
  • Fix #22656 - Handle quoted pipes
  • Add scr.timeout covering the ^C blocks
  • Fix #22652 - Handle ^C in pdj
  • Improve help message for afl,?
  • Initial WIP implementation of pl
  • Fix #22594 - Handle long flags in r_getopt as an alias for help
  • Implement support for json and r2 output for %env
  • Fix #22588 - Support multiple redirections in the same line
  • Fix error and add missing help for r2 -qc '?*~abcd' --
  • afbt -> afb,
  • Refactor ie outside the subcommand loop
  • Move 'ic?' help into a separate listing
  • Add support for wide pascal strings
  • Fix dc derivatives causing unintended seek
  • Initial ic, ia refactor and make icc take lang as argument
  • Fix ?*> dumping to screen
  • Implement ~$$ for internal sort+uniq grep filter
  • Port iaj fixing some invalid json bugs
  • Fix iiqq confussion and start delooping the i subcommands
  • Add afn* command
  • 0x command also saves seek history
  • Verbose R2_ARGS for debugging purposes
  • pdua now takes a math arg, not just a number
  • Keep r2 short help under 80 columns
  • Implement sfp and sff commands to seek nearest function or flag
  • Fix popd warning when there's only 1 pushed folder
  • Fix #22344 - Fix invalid json in ax.j command
  • Hide the rasm2/rabin2/.. unrelated plugin loading errors
  • Add afcj as an alias for afcfj
  • Add help for arb?
  • Fix code instead of help message for the yank command
  • Add more emojis for ls -e
  • Fallback to 'o.' when running dpe without debugger
  • Implement iE, command to table-query exported symbols
  • Fix glitch iterating script files provided via -i
  • Honor bin.lang in the icc command
  • Recognize the 'yr' command as owned by r2yara
  • Show bools as bools and ints as ints in ej json output
  • Fix 'unknown subcommand' error in ?* .. aet?
  • Add im* subcommand and honor bin->mem callback
  • Add obi as an alias for i
  • Expand r2 -Vj output to include all plugins, thirdparty and other version info
  • Implement 'Lbj' to list bin plugins in json
  • Bring back the r2 -Lj, and fix -LLj
  • Add scr.prompt.code to display return code in the prompt
  • Add signed subcommand for the pv family
  • List analysis plugins with the 'a:' command
  • Implement missing Lb command
  • Fix |H and temporal scr.html
  • Add 'aet' +help, fix assert in 'r2 -d XXX' and RConfig.getB
  • Support 'e key.?' syntax as alternative to 'e?key.'
  • Fix ?vi [1:$$] to read 1 byte from current offset
  • Add ~<> cons filter to indent XML
  • Reference abc command in the afbc help message
  • abt->abp (path between bbs) and add the new abt for tracing tags
  • Fix some bugs in the ls command parsing
  • Fix 'ar=32' vs 'ar= 32' both are valid
  • Fix autocompletion for pfc.
  • Add file.anal times in ?T

shlr

  • Fix qjs MSVC support
  • sdb-sync
  • Improve quickjs portability

signatures

  • Fix #22132 - Add support for loading zignatures in multiple formats

test

  • Fix running arch/debug specific tests in r2r
  • Implement the NORUN directive for r2r
  • Some more tests for the COFF bigobj binary
  • Add 'F' in r2r to fix all tests, fix fgets usage
  • Fix mnemonic output in m680x plugin
  • Implement ENV directive for r2r
  • Implement they REPEAT directive for r2r
  • Use meson in the perf suite, add GHA scripts and 'make some'
  • Add memory log parser
  • Initial implementation of the benchmark suite
  • Fix cd test/db/cmd && r2r .
  • Document R2R_OFFLINE
  • Fix return code when running r2r against .c files
  • Accept .c files as argument to r2r

tests

  • Fix running arch/debug specific tests in r2r
  • Implement the NORUN directive for r2r
  • Add 'F' in r2r to fix all tests, fix fgets usage
  • Implement ENV directive for r2r
  • Implement they REPEAT directive for r2r
  • Use meson in the perf suite, add GHA scripts and 'make some'
  • Add memory log parser
  • Initial implementation of the benchmark suite
  • Fix cd test/db/cmd && r2r .
  • Document R2R_OFFLINE
  • Fix return code when running r2r against .c files
  • Accept .c files as argument to r2r

thread

  • Current cmd.depth depends on core, not on the global cons context now

tools

  • Fix #22698 - Implement rax2 -j flag for json output
  • Rename rax2 -l to rax2 -n
  • Rename rax2 -n/-N to rax2 -x/-c
  • Rename rax2 -x to rax2 -X
  • Support quiet json plugin listing in rahash2 via -qjL or -jjL
  • Implement rahash2 -Lj to list plugins in JSON
  • Fix rax2 -l behaviour
  • Implement R2_ARGS environment
  • Handle RARUN2_ARGS env var in rarun2
  • Swap -a and -A in rasign2

util

  • Handle URL safe base64 decoding
  • Implement the sub-beats computation in RTime.beats()
  • Improve RStr.rwx permission string parsing
  • Implement scansets support in RStr.scanf
  • Initial import of our custom and safe r_str_scanf
  • Fix diff command
  • Fix r_print_hexdump() when called with RPrint *=NULL
  • Fix bug in r_str_split_list
  • Implement RRange.toString()
  • Joyful RStringSplit.asVector()
  • Swiss htuu / htpu / htsu
  • Add last function to vec
  • Fix issue with creating vec of pointer type
  • Cleanup swisstable code
  • Add cwisstable headers + support headers
  • Add hacky implementation of r_graph_pdom_tree
  • Fix domtree graph
  • JSON is not happy with \x
  • Allow append in vec to deep copy
  • Rework vec macros to inline finalizer function
  • Implement small vec optimization
  • Refactor vec generate macro
  • Do not sort vec if empty
  • Fix memory leaks in diffing code
  • Add more vector algorithms (partition, uniq, eraseback, ..)
  • Add sort function RVec, const correctness
  • Add find_index function to RVec
  • Update find to take any value type for more general use
  • Add find function to Vec
  • Cosmetic patch
  • Add r_graph_dom_tree
  • Add new optimized vector implementation
  • RFile.path() returns NULL if not found
  • Get rid of the unused skyline data structure

visual

  • Fix #22706 - Honor dbg.follow in F7/F8
  • Follow r:SP in the stack panel
  • Fix #22640 - improve sidepanels in limited space
  • Show proper help in VT and support tab and body scroll
  • Fix vbl and add vbL for the old one
  • Handle [] keys in VT
  • Add cmd.vprompt2 to run a command after the visual prompt
  • Use pdr instead of pdf to show non-linear functions in Vv
  • Fix regression in visual hex cursor
  • Implement scrolling in current r2slide
  • Fix visual marks commands: fV* and fV-#
  • Unify the visual_find() code with graph and visual
  • Implement VV% for the plain V%
  • Integrate Cb with disasm asmq key hints
  • Improve usability of Vdr - show disasm while renaming function names
  • Make V/ update the highlights in realtime

vuln

  • Patch Escape Sequence Injection Bypass

write

  • Implement 'wao+' command and remove RCore.hackHelp()

zignatures

  • Add rasign2 -i to run a script before generating signatures
  • Mangled function signatures for za
  • Hide duplicated xrefs in zg
  • Fix missing zignature xrefs, resolving source function name instead of flag
  • Enumerate any kind of refs/xrefs not just call/code ones