| Age | Commit message (Collapse) | Author |
|
|
|
These are never expressed, just adds another unneeded constraint on the impl
|
|
|
|
|
|
- Fixed some misc bugs
- Added real FlowGraphEdge type
- Added accessors for node edges
- Added interaction handler to the flow graph example to dump the flow graph to stdin
- Split out the flow graph API into smaller files
|
|
|
|
|
|
|
|
|
|
- Add unit tests
- Expose read/write functionality
- Add some much needed documentation when passing to memory map
|
|
- Don't use Result for some or none values
- Fix freeing of key value store objects
- Improve ergonomics a little bit
- Add unit tests
|
|
|
|
Previously we were comparing the section raw pointer and hashing it
|
|
Might want to key off the section string in the core, so we should give it back as a `BnString`
|
|
|
|
This is being done to reduce complexity in function signatures, specifically many of the strings we are passing ultimately should be new types themselves instead of "just strings", things such as type ids.
Another place which was confusing was dealing with filesystem related APIs, this commit turns most of those params into a stricter `Path` type.
This is bringing the rust api more inline with both python and C++, where the wrapper eagerly converts the string into the languages standard string type.
Special consideration must be made for symbols or other possible non utf-8 objects.
This commit will be followed up with one that adds the `IntoCStr` bound on API's we want to keep as invalid utf-8 so we can for example, get section by name on a section with invalid utf-8.
|
|
|
|
|
|
|
|
- Removed `to_string` shortcut from `BnString`.
- Misc formatting
|
|
Section names come from the binary itself, we want to preserve the name as is
|
|
`cstring.as_ref().as_ptr() as *const c_char` -> `cstring.as_ptr()`
`cstring.as_ref().as_ptr() as *mut _` -> `cstring.as_ptr()`
`cstring.as_ptr() as *const c_char` -> `cstring.as_ptr()`
With a few fixes for cstrings that might be dropped prematurely.
|
|
Followup to https://github.com/Vector35/binaryninja-api/pull/5897/
This simplifies usage of the trait in user code, should just be able to `to_cstr` to get the cstr repr and then call `as_ptr`.
Co-authored-by: Michael Krasnitski <michael.krasnitski@gmail.com>
|
|
We don't need to introduce extra global state when the goal is to not release floating licenses in shutdown.
|
|
|
|
|
|
|
|
conversion can be tolerated
Still need to go and audit all usage, but realistically the most important places to give the user control are with symbols, where the data can come from non utf8 sources
This is still incomplete, I just looked for usage of -> BnString so any other variant was omitted.
|
|
|
|
|
|
Fixed formatting and added information regarding the `volatile` annotation and how it impacts analysis
Fixes https://github.com/Vector35/binaryninja-api/issues/6697
|
|
|
|
|
|
|
|
|
|
This also updates the symbol names that are generated when the name
cannot be found to include the address in hex rather than decimal so
it's easier to navigate to.
|
|
We need to do this for RTTI info that resides in DefaultSectionSemantic sections, which will happen for some binaries where the data is placed in non-generic sections.
|
|
GCC emits a leading `*` to indicate that the type info is internal and
its name can be compared via pointer equality. It is not part of the
type name. This was only being handled when followed with `N`, but it
can apply to any mangled name.
Additionally, this updates some `std::string::find(...) == 0` calls in
the adjacent code to use `std::string::rfind(..., 0) == 0` as that bails
out of the string comparison as soon as the prefix does not match,
rather than continuing to search the entire string.
|
|
32-bit ELF binaries that are dynamically linked to the C++ runtime may
use a copy relocation for the vtable. The vtable itself will be defined
in the `.bss` section, and the copy relocation will cause the dynamic
linker to populate it at load time from the C++ runtime library.
Detect this by looking for a symbol pointing to the start of the vtable data,
two pointers before the vtable address.
|
|
|
|
|
|
|
|
1. Fix code related to SMI handlers
2. also parse handlers registered by SxDispatch and parse them together
3. Set Progress Text properly
|
|
Support all existing features in EFI Resolver,
1. Doesn't support running on existing BNDBs (though we tried to support
this in python plugins, it doesn't work well)
2. Perform analysis on MLIL rather than HLIL, previous pattern matching
on HLIL constains many false negatives
|
|
|
|
UEFI PEI modules often use IDTR to fetch the pointer to the pointer to
EFI_PEI_SERVICES. We can leverage binja's global register type for this
|
|
resource.
|
|
|
|
|
|
|