| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2024-12-10 | [SharedCache] Use basic copy-on-write for viewStateCache | Mark Rowe | |
| Copying the state from the cache into a new `SharedCache` object is done with a global lock held and is so expensive that it results in much of the shared cache analysis running on a single thread, with others blocked waiting to acquire the lock. The cache now holds a `std::shared_ptr` to the state. New `SharedCache` objects take a reference to the cached state and only create their own copy of it the first time they perform an operation that would mutate it. The cached copy is never mutated, only replaced, so there is no danger of modifying the state out from under a `SharedCache` object. Since the copy happens at first mutation, it is performed without any global locks held. This avoids blocking other threads. This cuts the initial load time of a macOS shared cache from 3 minutes to 70 seconds, and cuts the time taken to load and analyze AppKit from multiple hours to around 14 minutes. | |||
| 2024-12-10 | [SharedCache] Preserve flags when splitting a memory region | Mark Rowe | |
| The flags field was being left uninitialized which could result in the region being mishandled during later analysis. | |||
| 2024-12-10 | [SharedCache] Have VM track ranges rather than pages | Mark Rowe | |
| There are typically only a few dozen mappings, while there can be millions of pages. This reduces the amount of time spent populating the mapping from region to file accessor along with the memory usage of the same. | |||
| 2024-12-10 | [SharedCache] Switch to SAX-based writer API for JSON serialization | Author: Mark Rowe | |
| 2024-12-10 | [SharedCache] Rework metadata serialization to reduce memory overhead | Mark Rowe | |
| api/MetadataSerializable.hpp is removed in favor of including core/MetadataSerializable.hpp. Both headers defined types with the same name leading to One Definition Rule violations and surprising behavior. The serialization and deserialization context are now created on-demand during serialization rather than being a member of `MetadataSerializable`. This reduces the size of every serializable object by ~220 bytes. The context is passed explicitly as an argument to `Serialize` / `Deserialize`. As a result, `Serialize` / `Deserialize` can now be free functions rather than member functions. Since `MetadataSerializable` is not used for dynamic dispatch, the virtual methods are removed and the class is updated to be a class template using CRTP. This allows delegating to the derived class's `Load` and `Store` methods without the additional size overhead of the vtable pointer in every serializable object. These changes reduce the memory footprint of Binary Ninja after loading the macOS shared cache and loading a single dylib from it from 8.3GB to 4.6GB. | |||
| 2024-12-06 | Add `ui.view.symbols.hideExternalSymbols` to user docs | Mason Reed | |
| 2024-12-06 | fix old link to type libraries in guide | Jordan Wiens | |
| 2024-12-05 | fix documentation around workflow example code | Jordan Wiens | |
| 2024-12-05 | Add entry functions in triage view | Zichuan Li | |
| 2024-12-05 | Implement SHN_COMMON symbol handling | Mitchell Johnson | |
| 2024-12-04 | IDB Import: Bump idb-rs to 0.1.6 | Mason Reed | |
| Fixes more parsing failures: https://github.com/Vector35/idb-rs/compare/0.1.5...0.1.6 | |||
| 2024-12-04 | Fix missing ref increment in BinaryView::GetRelocationsAt | Mason Reed | |
| 2024-12-04 | Add support for DW_OP_addrx lookups for data variables | Josh Ferrell | |
| 2024-12-03 | Add `Relocation` information to python api | Mason Reed | |
| Previously only the relocation ranges were available | |||
| 2024-12-03 | IDB Import: Misc clippy lints | Mason Reed | |
| 2024-12-03 | IDB Import: Bump idb-rs dependency | Mason Reed | |
| Fixes many of the known parsing failures | |||
| 2024-12-03 | Multiple fixes for HI16/LO16 relocs for MIPS64 | Brandon Miller | |
| Some binaries consist of LO16 entires that are BEFORE associated HI16 entries. Also, prior to this commit we don't appear to be applying HI16 relocations at all for MIPS64. mips_decompose was being called with MIPS_32 and failing prior to fixing up the relocation | |||
| 2024-12-03 | Update documentation for add_memory_region. | Brian Potchik | |
| 2024-12-01 | Clarify workflow machine API note. | Brian Potchik | |
| 2024-12-01 | Revert "remove outdated mention of commercial only in workflows API" | Jordan Wiens | |
| This reverts commit 0237e4d47493e60d256fd7332866b1a7f881abd9. | |||
| 2024-12-01 | WARP: Run `cargo fmt` | Mason Reed | |
| 2024-12-01 | WARP: Prune useless functions and display progress in background task | Mason Reed | |
| Also bumps WARP so that loading of extremely large signature files can occur | |||
| 2024-12-01 | remove outdated mention of commercial only in workflows API | Jordan Wiens | |
| 2024-11-30 | Run `cargo fmt` on RISC-V architecture | Mason Reed | |
| 2024-11-30 | Remove temp register in JALR RISC-V when unused | Mason Reed | |
| 2024-11-30 | Update RISC-V function import recognizer | Mason Reed | |
| Will handle optional temporary register assignment now | |||
| 2024-11-29 | Fix RISC-V JALR lift when rs1==rd | Mitchell Johnson | |
| 2024-11-28 | Fix API memory leak in data renderers and language representations | Rusty Wagner | |
| 2024-11-27 | Add support for a logical memory map representation. | Brian Potchik | |
| 2024-11-25 | Fix shrx, shlx, sarx, rorx | yrp | |
| 2024-11-25 | RISC-V: Implements MULH, MULHU, MULHSU lifting | Jean-Michel Deva | |
| 2024-11-25 | WARP: Improve wording on `Trivial Function Length` description | Mason Reed | |
| 2024-11-22 | Update theme docs to include indentation lines. | Alexander Taylor | |
| 2024-11-25 | Add a concepts diagram to the Workflow docs. | Alexander Taylor | |
| 2024-11-25 | Rename 'defaultAnalysis' to 'baseAnalysis' in the Workflow system. | Brian Potchik | |
| 2024-11-25 | Fix regression with MIPS_HI16/MIPS_LO16 relocs | Brandon Miller | |
| 2024-11-25 | Add additional python APIs to query tags by scope. | Brian Potchik | |
| 2024-11-25 | Fix placeholder deprecation decorators and versions. | Brian Potchik | |
| 2024-11-24 | Properly maintain selections in the tags list. | Brian Potchik | |
| 2024-11-24 | Fix missed tags navigation requests via doubleClick actions. | Brian Potchik | |
| 2024-11-22 | Fix CXXABI postfixed externs being duplicated in ELF | Mason Reed | |
| 2024-11-22 | C++ and Python API for Firmware Ninja | Brandon Miller | |
| 2024-11-21 | Fix gnu3 demangler losing track of NTR ids | Glenn Smith | |
| 2024-11-21 | Remove DockHandler and DockWidget support. | Brian Potchik | |
| 2024-11-21 | Document next step to improve Tags UI performance. | Brian Potchik | |
| 2024-11-21 | Initial Tags UI refactor to address performance issues and UI blocking. | Brian Potchik | |
| 2024-11-19 | Fix signature path lookup for core signatures in WARP | Mason Reed | |
| 2024-11-19 | Fix MSP430 conditional jump lifting | Mason Reed | |
| 2024-11-19 | lots of formatting cleanup on workflow docs | Jordan Wiens | |
| 2024-11-18 | Minor documentation update for python API workflows. | Brian Potchik | |
