Skip to content

v1.2.0

Latest

Choose a tag to compare

@0xdea 0xdea released this 06 Nov 11:34
· 6 commits to master since this release

Added

  • Add NameMode and NameMode::apply to set how names are displayed in an IDB's pseudocode.
  • Add HaruspexError::IdaConfig, returned when an IDA configuration directive can't be applied.
  • Add the garble_names test binary and integration tests for names that aren't valid C identifiers.

Changed

  • Update idalib to v0.11.1, for IDB::modify_ida_config.
  • Make sanitize_filename an allowlist of letters and digits of any script, printable ASCII characters, and spaces
    (except reserved characters), so that Unicode format characters that IDA 9.5 keeps in names (e.g., bidirectional
    isolates and zero-width spaces) no longer reach output file names and printed paths. Other non-ASCII characters that
    aren't letters or digits (e.g., emoji) are now replaced too.
  • Mark the linker_messages suppression as permanent.
  • Update other dependencies.
  • Update documentation.

Fixed

  • Garble names that IDA 9.5 wraps in backticks in the pseudocode written by the haruspex CLI (e.g., #memcpy becomes
    _memcpy, as on IDA 9.4), so static analysis tools can parse it again. Library users need to call
    NameMode::Garbled.apply themselves. Some demangled Rust names (e.g., trait implementations such as
    <char as core::fmt::Display>::fmt) and types (e.g., &str) still keep their backticks.