| Age | Commit message (Collapse) | Author |
|
|
|
|
|
TypeBuilder.handle creates an immutable_type gets the handle and then deletes the object to which the handle belonged to.
This was fundamentally a UAF. immutable_copy is an error prone api as its very easy to misuse. We should consider a re-architecture of this API. `TypeBuilder.immutable_copy().<anything>` or `Type.mutable_copy().<anything>` should be considered sketchy and immutable_copy().handle is just a straight up UAF. Prior to this commit the following would cause a crash:
current_data_variable.type = PointerBuilder.create(FunctionType.create())
|
|
|
|
Introduces a Pythonic get_metadata() method to BinaryView, Function, Project,
TypeArchive, and TypeLibrary classes. This method behaves like dict.get(),
returning a default value (None by default) when a key doesn't exist, instead
of raising a KeyError.
Additionally, updates query_metadata() in TypeArchive and TypeLibrary to raise
KeyError when a key is not found, making them consistent with BinaryView,
Function, and Project. Previously these two classes returned None on missing
keys. This breaking change is documented in the method docstrings.
This provides a more consistent and Pythonic API for querying metadata across
all metadata-supporting classes.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
inlining during analysis
Previously the address of the instruction in the function being inlined
was used as the new instruction's address when copying it during
inlining. Now there is an additional option: use the address of the
call instruction that is being replaced as the new instruction's
address.
This new mode is useful when inlining thunks or stub functions, but care
must be taken if using it beyond that.
The benefit is that it ensures that when a function contains multiple
calls to the same stub function, each inlined copy ends up with distinct
addresses. This ensures that call type adjustments and other overrides
that are stored on the function and keyed by address can be applied
independently to each callsite that was inlined.
The trade-off is that if the function being inlined contains non-trivial
logic, all of the inlined instructions sharing an address will limit
what type of adjustments can be applied to them.
The Objective-C and shared cache workflows are updated to take advantage
of this new mode when they enable inlining of stub functions. This will
make it possible for multiple calls to the same runtime function within
a single function to have separate call type adjustments applied in the
future.
|
|
|
|
|
|
|
|
|
|
python callers listing referenced calls
Fixes https://github.com/Vector35/binaryninja-api/issues/7308
|
|
|
|
|
|
The python API was kept the same seeing as we are close to the release, will likely start deprecating some of those API's soon.
|
|
on references
|
|
|
|
|
|
|
|
|
|
This commit moves AnalyzeBasicBlocks from the binary ninja core to the
API and allows architecture plugins to optionally override
AnalyzeBasicBlocks for a custom implementation
Supply ABB inputs in BNBasicBlockAnalysisContext
Register default analyze basic blocks callback
This allows the nanomips and rust core architecture plugins to work
again while using the C++ API DefaultAnalyzeBasicBlocks
Use default ABB from Python plugins
Fix bug in API ArchAndAddr operator overload
Python APIs for basic block analysis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Previous commit causes failures in API documentation generation. This
builds and passes unit tests locally, hoping that will also be the case
for CI.
|
|
|
|
|
|
|
|
|
|
Fixes Vector35/binaryninja-api#6679
|
|
|
|
|
|
Return None instead of raising an ILException in Python Function.llil,
mlil, etc to allow these properties to play nice with map and filter
|
|
|
|
|
|
|
|
|
|
|
|
Fixes #6397
|
|
|
|
|
|
This reverts commit 1699c71999d29d32aba5c9f8fea193a661a4b02b.
|
|
|
|
|
|
Attempts to partially address #6019.
|