| Age | Commit message (Collapse) | Author |
|
|
|
|
|
Calls to `Workflow::Instance` that were looking up a built-in workflow
name are updated to use `Workflow::Get`. Others use `Workflow::GetOrCreate`.
|
|
|
|
This eliminates a significant amount of wasted work when loading
multiple images containing Objective-C from a shared cache. The time
taken to load 400 images from an iOS shared cache (with an analysis hold
enabled) drops from eight minutes to around six minutes.
|
|
|
|
|
|
|
|
The setting should halt analysis of branch targets that fall within string references.
Previous implementation looked up string references at branch source.
|
|
|
|
C++ plug-ins now consistently use the `plugin_rpath` or
`ui_plugin_rpath` macros to ensure they have `SKIP_BUILD_RPATH` set when
building on Mac (i.e., no `LC_RPATH` is added).
Rust plug-ins have their build.rs updated to only specify `-Wl,-rpath`
when building for Linux. It is not needed on macOS. On macOS we instead
explicitly specify an `@rpath`-relative install name. This doesn't
change any behavior, but avoids leaving an absolute path as the
library's install name and is consistent with CMake's behavior for C++
plug-ins.
|
|
|
|
thumb2 disassembler
|
|
|
|
floating-point/integer cases
|
|
[thumb2] removed redundant format suffixes from disassembly of VFP instruction
[thumb2] Corrected lifting of VCVT instruction
|
|
|
|
instead of deprecated Grako
|
|
PC when calculating address #6947
Updated thumb2 pcode parser used by disassembler generator to use Tatsu instead of deprecated Grako
|
|
|
|
|
|
When the section list gets large GetSectionsAt becomes quite slow instead the the whole list of sections outside the loop and just encour that hit once. It could probably be made even faster if we used an interval tree but then we have to pay the cost of building the tree which may be more nauanced
|
|
|
|
|
|
|
|
|
|
`Workflow::new` is replaced by `Workflow::build` that returns a
`Builder` type that supports the operations that mutate a workflow, such
as registering activities.
`Workflow::instance` is replaced by `Workflow::get` to make clear that
it is intended to look up an existing workflow.
`Workflow::cloned` is introduced to wrap the common pattern of
retrieving an existing workflow and cloning it with the same name in
order to modify it.
`Builder::activity_before` / `Builder::activity_after` are introduced to
wrap the common pattern of registering an activity then inserting it
before or after a given activity.
|
|
This makes it possible to see what structure the configuration takes and
eliminates errors due to typos in JSON string literals.
|
|
The names can simply be omitted since they are only mentioned in the
declaration of a function pointer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The `$<TARGET_FILE:binaryninjaapi>` syntax does not do what is intended
for Unix Makefiles.
In practice there's no reason for this custom command to depend on the
`binaryninjaapi` target. The Rust API uses core's C APIs directly rather
than via the C++ API, and it already depends on binaryninjacore.h via
`RUST_API_SOURCES`. Since it's running `cargo check` and not doing a
full compilation this header-only dependency is sufficient.
|
|
inserted
Instead of applying symbols and comments in the applier step, we will do it when the matched function is identified.
This has the side effect that if you turn off the apply activity names and comments will still be applied, more work to be done later.
|
|
|
|
|
|
`BNRelocationHandlerDefaultApplyRelocation` /
`BNRelocationHandlerApplyRelocation` /
`BNRelocationHandlerGetOperandForExternalRelocation` do not take
ownership of the reference that is passed to them. Instead they take
their own reference to the object. As a result, `Relocation` objects
passed into `RelocationHandler::ApplyRelocation` /
`CoreRelocationHandler::ApplyRelocation` /
`CoreRelocationHandler::GetOperandForExternalRelocation` were being
leaked.
|
|
ARM64 lifting replaces references to the zero register with constant
zeroes. The zero register is not intended to appear in any lifted IL.
In the case of the `mrs` instruction, the destination being a zero
register means the system register is accessed only for a side-effect,
and is not stored anywhere. The lifting is updated to specify no output
registers for the intrinsic in that case.
|
|
Was causing nightly tests to fail only on windows however which is strange
|
|
|
|
|
|
|
|
|
|
|
|
exception
|
|
stack trace associated with log messages, instead of creating large mutli-line messages for every exception
|