| Age | Commit message (Collapse) | Author |
|
This is functionally equivalent to the previous workflow_objc, with the
following changes:
1. It mutates the `core.function.metaAnalysis` workflow rather than
registering a new named workflow. The activities now all check for
the presence of the Objective-C metadata added by `ObjCProcessor` to
determine whether they should do work, rather than relying on
`MachoView` to override the function workflow when Objective-C
metadata is present. This fixes
https://github.com/Vector35/binaryninja-api/issues/6779.
2. The auto-inlining of `objc_msgSend` selector stub functions is
performed in a separate activity from the processing of
`objc_msgSend` call sites. The selector stub inlining activity is
configured so that it does not run in `DSCView` as the shared cache
needs different behavior for stub functions more generally that
`SharedCacheWorkflow` already provides.
3. The way that types like `id` and `SEL` are referenced is fixed so
that they show up as `id` rather than `objc_struct*`.
This also replaces the Objective-C portion of the shared cache's
workflow, and incorporates several bug fixes that had been applied to it
but not the standalone Objective-C workflow.
|
|
projects
|
|
|
|
Calls to `Workflow::Instance` that were looking up a built-in workflow
name are updated to use `Workflow::Get`. Others use `Workflow::GetOrCreate`.
|
|
|
|
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.
|
|
|
|
|
|
`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.
|
|
|
|
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.
|
|
|
|
|
|
message
|
|
This ensures that the Python source files are only generated and copied
into the output directory if inputs have changed, rather than being done
unconditionally.
|
|
This ensures that CMake detects when files that match the glob are added
or removed.
|
|
|
|
|
|
Fixes https://github.com/Vector35/binaryninja-api/issues/7194
|
|
Forgot to update these after the guid regression fix, there is no cause for alarm :)
|
|
Previously we assumed the original base address was used, however this causes issues now that we automatically rebase lower address spaced binaries.
|
|
Previously we only added the warp function activities to the meta workflow, however objective-c plugin currently registers its own
workflow that we must add the activities to as well.
Fixes https://github.com/Vector35/binaryninja-api/issues/7172
|
|
|
|
Fixes https://github.com/Vector35/binaryninja-api/issues/7116
|
|
matched functions
One day I will get the QT incantations correct
|
|
guids generated
Just a sanity check so we can alert the user, they can just reanalyze their functions and the guid will be constructed
|
|
We emit jumps at the end of some blocks that the architecture is not aware of, they are not actually apart of the functions instructions
rather they are used in our analysis... somehow, I have not figured out what they are supposed to be used for but regardless, they should be
ignored by WARP.
This was just a case where the filtering was including jumps in non start instructions, where we actually wanted the opposite.
|
|
This removes more barriers for those working with firmware to use WARP, previously if you had defined any sections (such as a vector interrupt table) then backed segments would
end up being marked non-relocatable. This, combined with the use of ELF intermediate object files created inconsistent GUID's, using the segments backing the real functions fixes this.
|
|
|
|
It is apparently "too bright" and I need to get "my eyes checked"
|
|
|
|
wants the symbol
We were previously constructing the function type, comments and variables to just throw away, wasting precious cpu cycles!
|
|
Will also adjust the worker thread count so that there is enough for view destruction and what not.
The default will be filled as well for the user.
|
|
Just added noise to the logs, probably should do this for rtti as well
|
|
|
|
|
|
- Fix project file filter not blacklisting warp files
- Fix project name not being used for default file save name
- Prevent adding the same file to the available sources
|
|
This previously was not allowed as the information would sometimes include a zero based segment, however this is still preferable in the case of firmware, where sections will not be available by default. This improves the usability of WARP with firmware by removing the requirement of filling section information prior to function analysis.
|
|
This is going to be disabled by default on this upcoming stable, however users may enable it once we deploy the public server. The data from the server is done through `Container::fetch_functions` independent of the nonblocking function lookup functions.
The sidebar has been updated to drive fetching so that when users navigate to a new function the fetcher will kick off. This fetcher operates on a separate thread, in the event of a user navigating to many functions before the current fetch has completed they all will be batched together in a single fetch.
Networked container currently is limited to just function prototypes, other type information separate from the function object will be omitted.
|
|
|
|
|
|
|
|
|
|
Was previously not exposed, we want it for unit tests.
|
|
With the new instruction retrieval we are getting the instructions at the end of the lifted function which are not really apart of the function, but they share the address of the last ret/jump.
|
|
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.
|
|
This reverts commit 5bafe5c7bdb0b56037a0b5c573236f9c6367353a.
|
|
|
|
analysis.objectiveC.resolveDynamicDispatch is enabled
|
|
|