summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-01-20Revert "Add line formatter API and a generic line formatter plugin"Rusty Wagner
This reverts commit 1699c71999d29d32aba5c9f8fea193a661a4b02b.
2025-01-20Allow overriding common loader settings when automatic load file parsing fails.Brian Potchik
2025-01-17[thumb2] Fix #6328: "Invalid intrinsic lifting for MRS instruction: ↵Galen Williamson
destination register incorrectly specified" by correctly specifying the intrinsic outputs
2025-01-17Add line formatter API and a generic line formatter pluginRusty Wagner
2025-01-17Firmware Ninja reference tree APIBrandon Miller
2025-01-17add selectAll to linear viewJordan Wiens
2025-01-17Allow for conditional subflow re-execution based on continuation property.Brian Potchik
2025-01-16Offload triage view hash calculations from the main thread.Brian Potchik
2025-01-15[aarch64] fix size of immediate arguments in intrinsic callsGalen Williamson
2025-01-15Add details link to view type dialog parse errorsJosh Ferrell
2025-01-15Remove unused calls to defineTypedef which were causing hangsPeter LaFosse
2025-01-15[SharedCache] Avoid copying strings on each call to VM::MappingAtAddressMark Rowe
`PageMapping` was storing the path to the file it points within. This was causing unnecessary work within `VM::MappingAtAddress` as the `PageMapping`, and thus the path, is copied into the return value. This copying was more expensive than the map lookup. The file path is now stored within a `LazyMappedFileAccessor` class that wraps the `SelfAllocatingWeakPtr`. This means the path is still available via the `PageMapping`, but it does not need to be copied as often. This includes two additional improvements / optimizations while I was touching the code in question: 1. `MMappedFileAccessor::Open` no longer performs two hash lookups when a file accessor already exists. 2. `VM::MapPages` takes the path by const reference to avoid an unnecessary copy.
2025-01-14Add hash for XrefItemPeter LaFosse
2025-01-14Fix docstring in plugin.pyBrian Potchik
2025-01-14add example to plugincommandcontextJordan Wiens
2025-01-13Add 'ui.log.wordWrap' setting with a default of disabled.Brian Potchik
2025-01-13Move all FeatureMap processing to the background.Brian Potchik
2025-01-11MSVC RTTI: Fix crash due to function creation on invalid virtual function entryMason Reed
Also fix type clobbering on anonymous class names
2025-01-10[SharedCache] Avoid crashing the product whenever bugs occur in ser/deser, ↵kat
fix compilation issue on linux
2025-01-10[SharedCache] Fix handling of relative selectors in macOS shared cachesMark Rowe
Find the relative selector base address in the Objective-C optimization data pointed to by the shared cache header, rather than via `__objc_scoffs`. This is only present on iOS, and not for every iOS version that encodes selectors via direct offsets. This also includes some related improvements: 1. Direct selectors get their own pointer type so they're rendered correctly in the view. 2. Method lists encoded as lists of lists are now handled. 3. The `dyld_cache_header` type added to the view is truncated to the length in the loaded cache. This ensures it is applied to the view. 4. A couple of methods that process method IMPs and selectors are updated to check whether the address is valid before attempting to process them. They would otherwise fail by throwing an exception if they proceed, but checking for validity is quicker and makes exception breakpoints usable.
2025-01-10[SharedCache] Track whether non-image regions are data vs codeMark Rowe
`BackingCache` now tracks the `dyld_cache_mapping_info` for its mappings so it has access to the memory protections for the region. This means it can avoid marking some regions as containing code when they don't, reducing the amount of analysis work that has to be done. Using `dyld_cache_mapping_info` also makes references to mappings easier to understand due to its named fields vs the nested `std::pair`s that were previously in use.
2025-01-10[SharedCache] Cache type libraries in the view-specific stateMark Rowe
They're surprisingly expensive to look up.
2025-01-10[SharedCache] Split view-specific state into a separate structMark Rowe
The existing view-specific state was stored in several global unordered maps. Many of these were accessed without locking, including `viewSpecificMutexes`, which is racy in the face of multiple threads. View-specific state is stored in a new heap-allocated `ViewSpecificState` struct that is reference counted via `std::shared_ptr`. A static map holds a `std::weak_ptr` to each view-specific state, keyed by session id. `SharedCache` retrieves its view-specific state during its constructor. Since `ViewSpecificState` is reference counted it will naturally be deallocated when the last `SharedCache` instance that references it goes away. Its corresponding entry will remain in the static map, though since it only holds a `std::weak_ptr` rather than any state it will not use much memory. The next time view-specific state is retrieved any expired entries will be removed from the map.
2025-01-09Add BNAllocStringWithLength API.Brian Potchik
2025-01-09Deprecate `Segment.serialize` and `Section.serialize` in favor of ↵Brian Potchik
descriptor-based classes.
2025-01-08[SharedCache] Fix uninitialized `loaded` field for mappings returned by ↵WeiN76LQh
`BNDSCViewGetAllImages`
2025-01-08Prevent crash when Mach-O view doesn't existJosh Ferrell
2025-01-07Add setting to limit maximum recursion depth for computing an expression ↵Josh Ferrell
value in an mlil dataflow query
2025-01-07Verbiage change in Getting Started doc.fosdick.io
2025-01-07Add information on the Portal to the Getting Started guide.fosdick.io
2025-01-07Bump UI ABI version due to previous commit.Alexander Taylor
2025-01-03Delete ViewNavigationModeMason Reed
Does not seem to do anything other than cause a crash!
2024-12-30Move Changelog filtering to UIMason Reed
2024-12-30add note to UI plugin bullet about the qt-build repoJordan Wiens
2024-12-27Fix trying to construct a FunctionViewType from a FunctionViewTypeGlenn Smith
2024-12-27Add default implementations to Python TypePrinter to dual C++Glenn Smith
2024-12-27One case of needing the type printer in pseudo rustGlenn Smith
2024-12-27Make pseudo-c use the default type printerGlenn Smith
2024-12-27Clean up langreps' opcode print switchGlenn Smith
2024-12-26[SharedCache] Add the ability to manually trigger Objective-C processingWeiN76LQh
A problem with processing Objective-C sections at the time a library is loaded is that some of the references within those sections may refer to unload sections. This results in things like selectors not being correctly typed and named. This commit provides a way for users to manually trigger Objective-C parsing against sections for a specific library or all libraries, via the API. Combined with the previous commit a user can use the API to batch load a number of libraries and skip Objective-C processing for each one and then run it across the entire of the DSC once they are all loaded. Further improvement would be to provide a way to trigger Objective-C processing through the UI.
2024-12-26[SharedCache] Add the ability to skip Objective-C processing when loading a ↵WeiN76LQh
library This is useful when batch loading libraries to avoid extra processing (once the next commit has landed).
2024-12-26[SharedCache] Fix post-processing of Objective-C sectionsWeiN76LQh
Prior to this commit the function `DSCObjCProcessor::PostProcessObjCSections` never does anything because it doesn't use the correct names to get the Objective-C sections of the recently loaded library. In fact it never does anything because the DSC never has sections with the names its searching for. This commit passes the `baseName` (the name of the library that was loaded), which is what other Objective-C section processing code does. Combining the base name with the section names it will now find them and process them as intended. This was resulting in alot of Objective-C related stuff being missed. There is however still an issue of the fact that the way this DSC plugin works means it only analyzes Objective-C sections once. This catches alot of things but there are a number of cases where other libraries need to be loaded first due to information being referenced in another library. For instance errors like `Failed to determine base classname for category` can be caused by the class reference in the category being to a class outside of the loaded library. Once the library containing the class has been loaded, the section containing the category should be re-proccessed.
2024-12-25[SharedCache] Remove unnecessary lock in `SharedCache` destructorWeiN76LQh
From what I can tell the lock being taken in `SharedCache::~SharedCache` was purely for the decrement of `sharedCacheReferences`, however its an atomic so a lock isn't necessary. The lock being taken is extremely contentious and therefore often slow to be acquired. This resulted in a surprising amount of execution time spent in the `SharedCache` destructor. Nothing hugely significant but a quick and easy win to remove this single line of code.
2024-12-24Fix Shared Cache Plugin out-of-tree buildVisual Ehrmanntraut
2024-12-23Update metadata version to prevent v2 loader incorrectly trying to load v3 ↵kat
symbol list We should think through a better way of handling upgrades, as v3 can load v2 dbs just fine, but there is no clean way to upgrade the info currently. We need SharedCache ser/des functions in DSCView.cpp
2024-12-23[SharedCache] Serialize `SharedCache::m_symbolInfos`WeiN76LQh
`SharedCache::m_symbolInfos` isn't being serialized but there is an attempt to deserialize it. This commit adds in the code to serialize it. I slightly modified the format because I didn't really understand how it was expected to be serialized based on the deserialization code. The deserialization code looked wrong to me but its likely a misunderstanding on my part. I kept it similar to how `m_exportInfos` is serialized.
2024-12-20Linear View: Persist highlight during renamesGlenn Smith
2024-12-18Fix crash when demangling certain namesGlenn Smith
Fixes #6261
2024-12-17Small doc fixJosh Ferrell
2024-12-17better docs on headless license managementJordan Wiens