summaryrefslogtreecommitdiff
path: root/python
AgeCommit message (Collapse)Author
2026-02-23[BNTL] Allow decompressing standalone TypeLibrary objectsMason Reed
Previously you must have written the type library to disk
2026-02-23[Python] Add `TypeLibrary.remove_named_object` and ↵Mason Reed
`TypeLibrary.remove_named_type`
2026-02-23[Python] Add missing `TypeLibrary.duplicate` APIMason Reed
2026-02-20Allow calling conventions to specify a list of registers that are required ↵Rusty Wagner
to be considered for heuristic calling convention detection
2026-02-18Python API: Fix overriding Architecture.assemble being brokenGlenn Smith
2026-02-18Python API: Add type hints to various Architecture flags fieldsGlenn Smith
2026-02-18Python API: Fix Platform.view_initGlenn Smith
It was passing the cffi object not the api object
2026-02-18Python API: Properly extract LLIL flags in get_flag_write_low_level_ilGlenn Smith
2026-02-18Python API: Fix LLIL flags param type being inaccurateGlenn Smith
They are flag *writes* not the flags themselves.
2026-02-17Add setters for NamedTypeReferenceBuilder propertiesPeter LaFosse
Add Python API setters for NamedTypeReferenceBuilder: - name setter: Sets the qualified name using BNSetNamedTypeReferenceBuilderName - type_id setter: Sets the type ID using BNSetNamedTypeReferenceBuilderTypeId - named_type_class setter: Sets the type class using BNSetNamedTypeReferenceBuilderTypeClass These setters enable modifying type reference builders after creation, which is useful for workflows that progressively refine type metadata during analysis or type recovery. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17Handle Universal binaries through container transform system.Brian Potchik
2026-02-16Fix TypeError when slicing FunctionList/BasicBlockList with [:], [n:], [:n]3rdit
2026-02-16Fix slice handling in TagList to match FunctionList/BasicBlockList fix3rdit
2026-02-16Share context between BB recovery, lifing, and disassemblyBrandon Miller
Adds a GetInstructionTextWithContext callback to the architecture class that can be used to pass data from AnalyzeBasicBlocks. This same context is also supplied to LiftFunction and allows for supplying shared function and/or binary view level information across basic block analysis, function lifting, and disassembly text rendering
2026-02-10Fix Python ABB triggering guided analysisBrandon Miller
2026-02-06Add FileMetadata::GetDisplayName API to convey synthesized filenames for ↵Brian Potchik
container file entries.
2026-01-30Improve filename handling for container files.Brian Potchik
2026-01-29Add support for ephemeral session-time settings for TransformSession.Brian Potchik
2026-01-29Fix Python exception in FunctionLifterContextBrandon Miller
2026-01-28Fix a fundamental problem with TypeBuilder.handle by deleting itPeter LaFosse
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())
2026-01-28Add session settings override support to Transform system and clean up ↵Brian Potchik
documentation.
2026-01-27Perform function lifting and inlining in arch pluginsBrandon Miller
This change allows architecture plugins to override the LiftFunction callback to iterate a function's basic block list and lift entire functions at once. This is required for architectures such as TMS320 C6x, which have non-traditional "delay slots" in that branches, loads, and other instructions take multiple cycles to complete, and branch instructions can reside within the delay slots of other branches.
2026-01-22[Python] Support MLIL_SEPARATE_PARAM_LIST and MLIL_SHARED_PARAM_SLOT in ↵Mark Rowe
copy_expr_to
2026-01-20Update container transform docs.Brian Potchik
2026-01-20Other changes related to handling null strings.Alexander Taylor
This fixes the incorrect type hint and the other instance of the function. It also looks like type parsing could have the same issue, so I've updated that as well.
2026-01-20handle None cases when empty strings are returned from the core and fix ↵Jordan Wiens
associated coreversion usage
2026-01-18fix syntax for note section of newly added api docsJordan Wiens
2026-01-16fix pydoc formatting for recent metadata API changesJordan Wiens
2026-01-16Add get_metadata() method and make query_metadata() raise KeyError consistentlyPeter LaFosse
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>
2026-01-15Make add_user/auto_segments/sections more pythonic.Peter LaFosse
This introduces two new dataclasses SegmentInfo and SectionInfo which hold information about their respective objects. These are used for specifying information to a BinaryView while class Segment and Section are still the objects used after registration. Additionally I've created two helper functions in Segment/Section which return the respective Info structure which could be useful if you wanted to modify existing Segments/Sections Currently these two APIs are only used by the add_segments/add_sections APIs but maybe more useful in the future.
2026-01-14Allow controlling which address is used for instructions created when ↵Mark Rowe
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.
2026-01-12Add module workflow hello world example.Malware Utkonos
2026-01-01update copyrights for 2026Jordan Wiens
2026-01-01manually update formatting of some copyrightsJordan Wiens
2026-01-01add whole-file entropy calculation to triageJordan Wiens
2025-12-29Add `ProjectFile` type annotation to python `load` function (#7839)utkonos
2025-12-18entropy tooltip showing offset and fix python versionJordan Wiens
2025-12-18fix triage entropy graph navigation for mapped filesJordan Wiens
2025-12-15Add PossibleValueSet operation APIs and fixes to PVS python APIJosh Ferrell
2025-12-12Generator: Detect flag enums and use IntFlag insteadGlenn Smith
Made possible by the new attributes in binja's type system.
2025-12-12Generator: Fix <4 byte signed enums with negative membersGlenn Smith
Literally only affects InvalidILViewType
2025-12-12Python: Make raw operand conversion functions privateGlenn Smith
Fixes Vector35/binaryninja-api#7782. Seems like these were missed in the refactor in de0b872e
2025-12-11Specify fixed underlying types for enums exposed by coreMark Rowe
This allows a few widely-used enums to be shrunk from 4 bytes to 1 byte, improving packing when they're used as struct members. To remain compatible with C, we follow CoreFoundation's approach and use a macro when defining the enum: ``` #if defined(__cplusplus) || __has_extension(c_fixed_enum) #define BN_ENUM(type, name) enum name : type #else #define BN_ENUM(type, name) typedef type name; enum #endif BN_ENUM(uint8_t, SomeEnum) { ... } ``` In C++ and C23 this will expand to an enum with a fixed underlying type. In older C language versions, this will result in the enum type being a typedef of the underlying type, with an unnamed enum providing the enum values. Minor changes were needed within the Python bindings to update places that made assumptions about the underlying type of the enums.
2025-12-11Plugin api docs typos fix (#7751)Max Stanchin
2025-12-11Remove misc stray backticks in python docs (#7776)utkonos
2025-12-09Fix show_message_box crashing with `None` description in Python (#7748)utkonos
2025-12-09Python: Fix enums not being casted to their types in generatorGlenn Smith
2025-12-07Fix docs example rendering for PluginCommandContextJosh Ferrell
2025-12-05add examples for execute_ APIsJordan Wiens
2025-12-05Do not register the dbg object from the APIXusheng