Add a setting to opt out of rewriting message sends with visible implementations #70
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The setting is on by default to preserve the current experience. It should likely be revisited as related changes are merged.
I find this to be confusing as often as it is helpful since it picks the first implementation of the selector it sees without consideration for the type of the receiver.
This is particularly annoying if the binary being analyzed implements a method with the same name as a commonly-used method on a system type (
-description
or-path
, for instance), or has methods with generic names (-initWithURL:
) on many types.Explicit cross-references from selectors to method implementations (Vector35/binaryninja-api#6814) make it possible to see the potential implementations without rewriting the call, and an Objective-C pseudo-language (Vector35/binaryninja-api#6807) provides a more natural representation of Objective-C message sends without these downsides.