summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-12-10[SharedCache] Use basic copy-on-write for viewStateCacheMark 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 regionMark 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 pagesMark 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 serializationAuthor: Mark Rowe
2024-12-10[SharedCache] Rework metadata serialization to reduce memory overheadMark 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-06Add `ui.view.symbols.hideExternalSymbols` to user docsMason Reed
2024-12-06fix old link to type libraries in guideJordan Wiens
2024-12-05fix documentation around workflow example codeJordan Wiens
2024-12-05Add entry functions in triage viewZichuan Li
2024-12-05Implement SHN_COMMON symbol handlingMitchell Johnson
2024-12-04IDB Import: Bump idb-rs to 0.1.6Mason Reed
Fixes more parsing failures: https://github.com/Vector35/idb-rs/compare/0.1.5...0.1.6
2024-12-04Fix missing ref increment in BinaryView::GetRelocationsAtMason Reed
2024-12-04Add support for DW_OP_addrx lookups for data variablesJosh Ferrell
2024-12-03Add `Relocation` information to python apiMason Reed
Previously only the relocation ranges were available
2024-12-03IDB Import: Misc clippy lintsMason Reed
2024-12-03IDB Import: Bump idb-rs dependencyMason Reed
Fixes many of the known parsing failures
2024-12-03Multiple fixes for HI16/LO16 relocs for MIPS64Brandon 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-03Update documentation for add_memory_region.Brian Potchik
2024-12-01Clarify workflow machine API note.Brian Potchik
2024-12-01Revert "remove outdated mention of commercial only in workflows API"Jordan Wiens
This reverts commit 0237e4d47493e60d256fd7332866b1a7f881abd9.
2024-12-01WARP: Run `cargo fmt`Mason Reed
2024-12-01WARP: Prune useless functions and display progress in background taskMason Reed
Also bumps WARP so that loading of extremely large signature files can occur
2024-12-01remove outdated mention of commercial only in workflows APIJordan Wiens
2024-11-30Run `cargo fmt` on RISC-V architectureMason Reed
2024-11-30Remove temp register in JALR RISC-V when unusedMason Reed
2024-11-30Update RISC-V function import recognizerMason Reed
Will handle optional temporary register assignment now
2024-11-29Fix RISC-V JALR lift when rs1==rdMitchell Johnson
2024-11-28Fix API memory leak in data renderers and language representationsRusty Wagner
2024-11-27Add support for a logical memory map representation.Brian Potchik
2024-11-25Fix shrx, shlx, sarx, rorxyrp
2024-11-25RISC-V: Implements MULH, MULHU, MULHSU liftingJean-Michel Deva
2024-11-25WARP: Improve wording on `Trivial Function Length` descriptionMason Reed
2024-11-22Update theme docs to include indentation lines.Alexander Taylor
2024-11-25Add a concepts diagram to the Workflow docs.Alexander Taylor
2024-11-25Rename 'defaultAnalysis' to 'baseAnalysis' in the Workflow system.Brian Potchik
2024-11-25Fix regression with MIPS_HI16/MIPS_LO16 relocsBrandon Miller
2024-11-25Add additional python APIs to query tags by scope.Brian Potchik
2024-11-25Fix placeholder deprecation decorators and versions.Brian Potchik
2024-11-24Properly maintain selections in the tags list.Brian Potchik
2024-11-24Fix missed tags navigation requests via doubleClick actions.Brian Potchik
2024-11-22Fix CXXABI postfixed externs being duplicated in ELFMason Reed
2024-11-22C++ and Python API for Firmware NinjaBrandon Miller
2024-11-21Fix gnu3 demangler losing track of NTR idsGlenn Smith
2024-11-21Remove DockHandler and DockWidget support.Brian Potchik
2024-11-21Document next step to improve Tags UI performance.Brian Potchik
2024-11-21Initial Tags UI refactor to address performance issues and UI blocking.Brian Potchik
2024-11-19Fix signature path lookup for core signatures in WARPMason Reed
2024-11-19Fix MSP430 conditional jump liftingMason Reed
2024-11-19lots of formatting cleanup on workflow docsJordan Wiens
2024-11-18Minor documentation update for python API workflows.Brian Potchik