Release Notes
Version: 5.4.0
Previous: 5.3.1
Commits: 258
Contributors: 20
Highlights
- Add the vector35 arm64 for analysis, esil and disasm and r2 can be built without capstone
- Improved integration to use r2ghidra analysis and disassemble mainly tested for avr, v850 and arm64
- Fix emulation of several x86 and arm64 instructions, including an scripted way to import official arm64 instruction descriptions
- Bring back the cmd.pin to instrument the esil emulation when a specific address is hit
- Small steps towards Projects with improved management for version control
- Improved visual and panels with better interactions and fixed glitches
Shell
- 500 more commands are now listed in the recursive help command: ?*
- Backslash is now completely gone. Please use ‘:’ or the original ‘=!’ instead.
- Implement @@== foreach word iterator operator
- Add mwf command to write local files into remote targets
- wv1,2,4,8 accept many space-separated numbers now
Search
- New /c subcommands are now available for searching crypto stuff
- To find references to the UDS CAN table use /ru
- Find PGP and RSA encrypted keys in memory with /cg
- Search for common hashing and crypto constant tables in /ck
- Add /ab to find backward jumps (mostly loops) and handle ^C
- Initial implementation of spp, snp, /bp and /pp to find next/prev preludes
Analysis
- Improved VAX analysis, disassembly and analysis
- Esil function emulation is performed properly spotting many more xrefs and reduces falses positives.
- Default aa, aaa and aaaa analysis commands are now faster and produce better results
- Analysis plugins can be now used as a replacement for the asm ones only for disassembling. Next release will start removing unnecessary asm plugins, reducing compile times and build size.
- The new ‘wan’ command nops the partial instructions left, making binary patching much simpler
- Faster exit times for ^D, making interactions more fluent and reducing CI times
- Initial implementatil of ESIL macros and start reducing the instruction set
- Better x86.pseudo and varsub for strings
Debugger
- Signal handling is now displayed in human form and C with better stop reasons
- Use DRX APIs to handle breakpoint recoils only on x86-64
Signatures
- Support FLIRT v5 file format compression
- Fix bug in zaf creating zignspace
- Expand r_sign API and major refactor
New platforms:
The build system and CI packaging has been improved quite a lot, simplifying the release process and testing.
- serenityOS: unix based OS that looks like w95, with its own kernel, libraries and userland. Debugger support in r2 is not yet available for SerenityOS, but APIs are there, so it’s just a matter of getting it
- Vinix: Kernel completely written in V, able to run bash, gcc or python, is now able to run r2!
- Vax/netbsd: after discovering SIMH, a Vax emulator, took me few minutes to run NetBSD and run r2 in there, no debugger support yet.
- WebAssembly is now build and published in the CI
- Tic80: For now it’s just identifying and parsing the headers and placing the flags
Windows
- Building on windows is as easy as running: preconfigure, configure and make
- That will detect VS, Python, Git and setup the PATH and install Meson and Ninja for you.
- Resolve Windows APIs at runtime to fix build with mingw and improve backward compat
More details
Authors
Alex Bender Apkunpacker Azox Davide Pizzolotto Dennis Goodlett Enshin Andrey Ilya Trukhanov L\u221a\xb0szl\u221a\u2265 Vask\u221a\u2265 Maijin Murphy Paul I RHL120 Royos90 Sylvain Pelissier aemmitt-ns gogo hot3eed lasek0 pancake pancake
Changes
anal
- Properly stringify the RAnalOP.type field
- Implement aaff command and improve aaf? help message
-
- Extend afj command to handle all jump table parameter options
- Implement ‘afs*’ command to export function signature info in r2 commands
- Fix afsj, taking signature args instead of fcnargs in json
- Initial import of the arm64v35 disassembler and analysis plugins
- Optimize infinite loop on non-quantum computers
- Avoid assert on avr’s null cmpreg test
- Finish the tolowering of anal.noNULL
- Fix aef and aaef to actually find xrefs at least
asm
- Fix #18813 – Cannot assemble cmp w26, 0 in arm64
- Fix #18876 – Check imm bounds for some instructions in the x86.nz assembler
- Add pushf/popf instructions to x86.nz
- Use RAnalBind in RAsm to reuse RAnalPlugins to disassemble
- Update ARM64 arm.sdb.txt opcode descriptions from documentation
- Update the VAX disassembler from binutils
assembler
- Fix #18872 – New command ‘wan’ to write and nop affected instructions
bin
- Fix #18783 – Support ELFs with phnum > 0xFFFF
- Allow RBinPlugins to use RBinFile at check()
- Initial support for the TIC-80 Fantasy Computer cartridges
- Replace SDB with HtPU in RBin.filter_name()
- Put archinfo.{minopsz,maxopsz,align} in the output of i
- Implement ELF relocs for VAX
build
- Add portability support for Vinix
- Add meson support for the anal.arm.v35 plugin
- Add preconfigure/configure/make batch scripts for Windows
- Initial import of
./preconfigure
for packaging purposes - Improve the macOS packaging scripts
- Import radare2-win-installer files into dist/windows
- Fix meson build and proper use of cgen
- Fix
system()
on arm64 macOS targets (#18877) - Initial support for capstone-less compilations
- Build and publish the ZIP with the WASI bins
- Add initial support for building r2 on WASI
ci
- Version the artifacts
cons
- Dont check out of bounds last chars
- Honor faster ^D on interactive execution path
- Fix arrow handling after fixing mouse clicking glitches
core
- Honor bool in io.va, scr.interactive, scr.prompt and cfg.fortunes
- Optimize and improve r_name_filter calls
- Add &w command to wait and run for queued commands
- Implement &: for queue commands
- Implement @@== foreach word iterator operator
debug
- Fix the windows debugger and make it more stable
- Add tests for the improved signal handling messages
- Change the way wait events are handled in the unix-debug backend
- Add ‘sigstr’ to the ‘di’ output for verboser stop reasons
- Add RSignal.toHuman() and improve RDebugReason.toString()
- Use DRX APIs to handle breakpoint recoils only on x86-64
disasm
- Support arch.* namings for the parse plugins
- Better x86.pseudo and varsub for strings
- Fix r_str_ansi_len() causing unaligned ‘unaligned’ words
- Improve invalid address and string parameter issues in emu.str and pd comments
- Improve x86.parse for asm.pseudo
esil
- Fix emulation for AARCH64 ldr,str,stp,ldp instructions
- Fix #18860 – mul and imul for *dx operands and 64 bit widths
- Bring back pins to esil land
- Fix POPF POPFD POPFQ not increasing stack pointer
- Add wide and math instr esil for dalvik, pac esil for arm64
- Initial implementatil of ESIL macros
fs
- Add mwf command to write local files into remote targets
io
- io.plugin.lseek -> .seek for portability (wasi related) (#18840)
panels
- Add xX key descriptions in the help message
- Improve the pdc output to allow recompilation
- Initial implementation of the pdo esil2c output
projects
- Dont save projects when no project is used
- Exclude files of nested rvc repos from repo_files()
- Use r_sys_whoami as the author name for r_vc_commit
- rvc add r_vc_find_rp
- Rework r_vc_checkout and fix some mem leaks
- Rework the rvc_commit functions
- Take advantage of prj.vc.type and merge rvc & git
- Fix r_vc_commit and other functions
- Major rvc api refactor to use sdb
rvc
- Fix memory leak and infinite loop in r_vc_find_rp
search
- Implement /ck command to search for crypto constant tables
- Rename /cu UDS CAN table search to /ru command
- Add PGP search for signature and RSA encrypted private keys (#18961)
- Add /cg command to search for GPG artifacts
- Update tests and add /a[?]q for quiet-legacy mode
- Use pdi in /ad output
- Initial implementation of spp, snp, /bp and /pp to find next/prev preludes
- Add /ab to find backward jumps (mostly loops) and handle ^C
shell
- Autocomplete :. command
- wv1,2,4,8 accept many space-separated numbers now
- Remove other useless and incomplete treesitter leftovers and get +400 new commands in the recursive help
- Remove colons in “?” number conversion output
- Honor < and > comparison operators in RNumMath
- Use RNum.math in “?b” to make ‘?b 1<<1’ work
- Add scr.hist.filter to toggle the filtered history up/down search
- Improved reverse-search in command history
- Faster ^D (leave r2 without freeing the core)
- Completely eliminate the deprecated backslash command
- Add some help and better parsing for the anal hints
signatures
- Add r_sign_metric_search to r_sign.h
- Fix bug in zaf creating zignspace
- Expand r_sign API
-
- Use r_sign in rasign2
- Support FLIRT v5 file format compression
tools
- Rename rvc2 to ravc2 to follow the ra*2 pattern
- Add rasm2 -LL to list anal plugins loaded
vc
- Integrate rvc in projects and add a default commit message
visual
- Add context in visual xrefs
- Fix #18843 – Implement Vx[+-] to add/delete xrefs
- Fix glitches when clicking in the hud
- Fix asm.hint.imm keystrokes ignored
- Fix #18292 – Clarify the use of Vdn/Vdr and rename VdR to VdX
- Handle ‘o’ key for options in panels
- Initial implementation of ~…. for hudline prompt
- Add Vi+ Vi- keys for visual insert byte inc/dec
- Add Vi: keystroke to run commands on insert mode
windows
- Use dynamic api resolution on windows builds for better portability
Directly related posts: