| 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-05 | Implement SHN_COMMON symbol handling | Mitchell Johnson | |
| 2024-11-25 | Rename 'defaultAnalysis' to 'baseAnalysis' in the Workflow system. | Brian Potchik | |
| 2024-11-22 | Fix CXXABI postfixed externs being duplicated in ELF | Mason Reed | |
| 2024-11-13 | [SharedCache] Fix a bndb deserialization error caused by last commit | kat | |
| 2024-11-13 | Append export and symbol info to correct arrays | Mark Rowe | |
| This is both a correctness fix and avoids leaking a massive amount of memory. | |||
| 2024-11-13 | Don't leak DataBuffers | Mark Rowe | |
| `MMappedFileAccessor::ReadBuffer` was returning a heap-allocated `DataBuffer`, but no callers were ever deleting it. There does not appear to be any reason to heap allocate the `DataBuffer` as the type is effectively a smart pointer wrapper around `BNDataBuffer`. Switch to returning it by value instead. Additionally, `MMappedFileAccessor::ReadBuffer` was allocating a buffer, copying data into it, and then handing that allocation to the `DataBuffer` constructor. The constructor copies data into a new allocation it owns so this allocation is unnecessary and was being leaked. | |||
| 2024-11-13 | make abbreviation match longer name for DSC plugin info | Jordan Wiens | |
| 2024-11-13 | Bulk add segments in the binary view to improve performance | Xusheng | |
| 2024-11-12 | [SharedCache] Better failure state for triage view | kat | |
| 2024-11-11 | Add actual logger api to rust | Mason Reed | |
| 2024-11-09 | fix DSC first-popup dialog | Jordan Wiens | |
| 2024-11-06 | reorder DSC triage tabs and small text changes | Jordan Wiens | |
| 2024-11-06 | normalize Shared Cache name | Jordan Wiens | |
| 2024-11-06 | [SharedCache] Fix bndb save/load within projects | kat | |
| 2024-11-05 | [SharedCache] Fix .bndb save/load outside of projects | kat | |
| 2024-11-05 | [SharedCache] very Hotfix for 'SharedCache.load_image_with_install_name' | kat | |
| 2024-11-05 | [SharedCache] Barebones sanity check on ivar list size | kat | |
| 2024-11-05 | [SharedCache] Hotfix flags on dyldData sections | kat | |
| 2024-11-05 | [SharedCache] Changes to the alpha popup/info tab | kat | |
| 2024-11-05 | [SharedCache] Add load option to disable automatic loading of libsystem_c | kat | |
| 2024-11-05 | [SharedCache] Fix for section names in caches opened within a project | kat | |
| 2024-11-05 | [SharedCache] Optimizations for symbol resolution workflow | kat | |
| 2024-11-05 | [SharedCache] Add project support for split dsc | Josh Ferrell | |
| 2024-11-05 | [SharedCache] Implement LoadedImage API, Fix serialized image names, more ↵ | kat | |
| robust system for out-of-date databases | |||
| 2024-11-05 | [SharedCache] Fix a crash whenever user uses DSC apis on non-dsc. | kat | |
| 2024-11-04 | Remove ability to panic on pre-initialized logger in rust | Mason Reed | |
| Typically this would never occur, however due to the mystical nature of linkers this somehow has happened outside of demo builds | |||
| 2024-10-28 | [SharedCache] Warnings Cleanup | kat | |
| 2024-10-28 | [SharedCache] Fix UI causing BV leaks | kat | |
| 2024-10-28 | [SharedCache] Optimizations+fixes for SharedCache function workflow. | kat | |
| 2024-10-23 | Initial commit of the alpha dyld_shared_cache view API Plugin. | kat | |
| This is an early release of our DSC processing plugin. We're still hard at work improving this feature. You should be able to just drop in a dyld_shared_cache and use the 'Shared Cache Triage' view to load and analyze images. | |||
| 2024-10-23 | Fix conditional no-return | Peter LaFosse | |
| 2024-10-23 | Add API to bulk add segments, use it in elf view | Josh Ferrell | |
| 2024-10-17 | verify relocation sections have non-zero sizes | Jordan Wiens | |
| 2024-10-17 | Demangler plugin API | Glenn Smith | |
| Closes #467 | |||
| 2024-10-14 | Update bindgen to 0.70.1 and remove untracked lockfiles | Mason Reed | |
| 2024-09-26 | Clean up unused variables in Mach-O/Obj-C code | kat | |
| 2024-09-25 | Fix PE with invalid string table start failing to load | Josh Ferrell | |
| 2024-09-19 | Add additional testing and handling for object settings. | Brian Potchik | |
| 2024-09-18 | Add support for loading symbols from .gnu_debugdata | Josh Ferrell | |
| 2024-09-16 | Register and use loggers for COFF view | Josh Ferrell | |
| 2024-09-16 | Fail to resolve long PE section name when string table is invalid | Josh Ferrell | |
| 2024-09-13 | Fix many warnings | Josh Ferrell | |
| 2024-09-13 | Ultimate. | Alexander Taylor | |
| 2024-08-29 | Update load setting properties from rust plugin | Mason Reed | |
| 2024-08-27 | Fix the CMakeLists.txt for bintxt view | Mason Reed | |
