-
Notifications
You must be signed in to change notification settings - Fork 274
Open
Labels
Component: APIIssue needs changes to the APIIssue needs changes to the APIComponent: CoreIssue needs changes to the coreIssue needs changes to the coreComponent: Python APIIssue needs changes to the python APIIssue needs changes to the python APIComponent: Rust APIIssue needs changes to the Rust APIIssue needs changes to the Rust APICore: HLILIssue involves High Level ILIssue involves High Level ILEffort: HighIssues require > 1 month of workIssues require > 1 month of workImpact: HighIssue adds or blocks important functionalityIssue adds or blocks important functionality
Description
What is the feature you'd like to have?
As mentioned at https://docs.binary.ninja/dev/bnil-modifying.html, support for modifying HLIL in workflows is incomplete.
Looking at the C API, these functions that exist for both LLIL and MLIL seem to lack HLIL equivalents:
BNPrepareToCopyLowLevelILFunctionBNPrepareToCopyLowLevelILBasicBlockBNLowLevelILAddInstruction
Therefore it seems impossible to copy HLIL functions in order to add new expressions/instructions. I've only been able to patch existing HLIL expressions.
Also, I don't see any way to establish MLIL-HLIL mappings. The documentation mentions this as a limitation, although it also claims that LLIL-MLIL doesn't work and I think that might be out of date? Or at least, the MLIL manipulation APIs allow passing LLIL-MLIL mapping info…
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Component: APIIssue needs changes to the APIIssue needs changes to the APIComponent: CoreIssue needs changes to the coreIssue needs changes to the coreComponent: Python APIIssue needs changes to the python APIIssue needs changes to the python APIComponent: Rust APIIssue needs changes to the Rust APIIssue needs changes to the Rust APICore: HLILIssue involves High Level ILIssue involves High Level ILEffort: HighIssues require > 1 month of workIssues require > 1 month of workImpact: HighIssue adds or blocks important functionalityIssue adds or blocks important functionality