radare2 发布版本: codename: SleepyNull

radare2-2.7.0 -- SleepyNull

This release brings a lot of improvements in the analysis and visual representation. Things like improved variable detection, types inference, extended jump tables detection are now enabled by default (see afta command for the variables and types inference). A lot of small fixes to make visual modes even prettier than before: Unicode support across visual modes and strings, bugfixes, and enhancements of the visual panel's mode, extended autocompletion. Big amount of these changes was brought in by our beloved Google Summer of Code students and external contributors.

There is one more notable big change - background tasks, improving the responsiveness of radare2 in visual mode and from r2pipe.

File formats

  • Fix ELF issue with null SHT entries

Architectures

  • Fixed ARM instruction filtering
  • Major fixes in SH analysis and ESIL uplifting
  • Fixes in PPC analysis and ESIL uplifting
  • Add support for PIC Midrange & Enhanced Midrange

Analysis

  • Improved arguments detection
  • Improved register-based arguments and variables analysis
  • Initial support of C union types
  • Add op.ireg/scale to ARM and apply that in type link
  • Use RAnalop.dst/src across different architectures for immediates' value analysis
  • Initial support for type inference across function calls
  • Add double pointer dereference analysis
  • Initial work on type inference based on instruction access pattern

Visual mode

  • Support for Unicode strings
  • Support for graphs in panels mode
  • '-' and '|' keys for a horizontal and vertical split in panels mode
  • Improvements and fixes of graphs reflow and rendering
  • Fold cases of switch cases to the same address
  • V!d <-> V!D : for consistency with visual mode (Vd)
  • Add backspace as an alias for q in Vb
  • It's now possible to display the real names of flag, instead of an r2-mangled one
  • Improve vv visual function browser
  • Improve vv: vvR, vvd and colorize title
  • Add the ability to select a column with tab to scroll with jk in disasm
  • Handle JK in vv, add _hud
  • Visual function browser - enter seeks to the function
  • In visual panels make JK scroll more instead of change frame selection

Graphs

  • Add colorized shortcuts to (mini)graph
  • Improve jum-tables edge positioning
  • Merge edges with the same origin/destination

Configuration changes

  • Removed anal.split and anal.bb.split
  • Removed unused cmd.graph
  • Added anal.endsize
  • Added asm.imm.str to autodetect strings as immediates
  • Added asm.xrefs.fold to fold big amount of references
  • Added asm.flags.real to show real (unescaped) flag names
  • Substitute asm.lines with asm.lines.bb
  • bin.maxuniblocks - max number of Unicode blocks that a UTF string can consist of
  • Bring back io.pava (EXPERIMENTAL)

Debug

  • Various fixes and improvements in remote WinDbg support
  • Implement dpt for windbg plugin
  • Fix F1-F9 debugging keys
  • Implement named breakpoints with support for expressions

New and changed commands

  • !!!: for registering autocompletion logic
  • Improve aod: aod* is now aoda, aod. is aod
  • Support for using variable name in tp
  • Implement $r{} to access register values by name
  • Added -ee to rabin2 -g
  • Make dm. output like dm and add dmq.
  • Implement ?d* to list all opcode descriptions
  • Implement {flag} to get flag size
  • Add ahr command to set hint for function return values
  • Implement tpx command to accept sequence of bytes
  • Honor @x in pf
  • Renamed command agt to abt
  • Support 0xff.. syntax for RNum
  • Implement rax2, rahash2, r2pm, … as r2 commands
  • Implement omo and oq. commands
  • Implement omq.
  • Implement ompd to depriorize a map
  • Implement dbi addr and dbi.
  • Added agA global graph and agR global graph
  • iSSj: json output for iSS
  • Add afls to sort function list
  • afls->afl+, sort afls help
  • Add &t command
  • Added json version of dp*
  • Added json list to debug plugin list dL
  • Extend output of ao to show ireg, scale, ...
  • Show cycles, failcycles and delay in ao, as it was in aoj
  • Renamed ?d into aod
  • Moved r2 segment cmds from iS* to iSS*
  • Use segment. prefix for segment flags in set mode
  • Moved segments from rabin2 -S to rabin2 -SS
  • Implement rafind2 recursive search ability
  • Make equiv flags for rabin2 -g more future-proof
  • Added wordhl and linehl color theme options to set highlight color