| Age | Commit message (Collapse) | Author |
|
shared cache
Dataflow is now used to determine call targets when detecting calls to
reference counting runtime functions. The previous approach of matching
on specific instructions missed some patterns that are common in the
shared cache.
|
|
Adds WARP, DWARF Import and Objective-C plugins to free
|
|
operations
A new activity is added that will remove calls to `objc_retain`,
`objc_release`, `objc_autorelease`, and related functions. It is
disabled by default due to the fact it changes the semantics of the
code. It can be enabled on a per-function basis via the Function
Settings context menu or command palette entry. Alternatively, it can be
enabled in Open with Options or in user settings if a user would prefer
it be on for an entire file or for all files they open.
For now the activity is only eligible within arm64 binaries. Supporting
x86_64 will require matching some slightly different IL patterns.
|
|
|
|
|
|
|
|
Calls to `objc_msgSendSuper2` with a selector in the `init` family are
detected and their arguments are analyzed to determine the receiver
class. A call type adjustment is added to update the return type.
This handles most calls to `[super init]` from Objective-C code as the
compiler generates a straightforward code sequence for these calls. Some
calls from Swift are handled, but the Swift compiler generates more varied
code so additional work is needed for complete coverage.
|
|
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.
|