summaryrefslogtreecommitdiff
path: root/docs/guide/objectivec.md
blob: 5fef33bc11483dcb553eb4ab02acf1ad65665a1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Objective-C

Binary Ninja ships with [an additional plugin](https://github.com/Vector35/workflow_objc) for assisting with Objective-C analysis. 
A brief summary of the features offered is as follows:

- **Function Call Cleanup.** When using the Objective-C workflow, calls to
  `objc_msgSend` can be replaced with direct calls to the relevant function's
  implementation.

- **Name and Type Recovery.** Using runtime information embedded in the
  binary, Binary Ninja can automatically apply names and type information to
  Objective-C functions.

- **Structure Markup.** Data variables are automatically created for Objective-C
  structures such as classes and method lists to enable easy navigation.

- **Data Renderers.** Formatting of Objective-C types such as tagged and/or
  (image-)relative pointers is improved via custom data renderers.

- **CFString Handling.** Data variables are automatically created for all
  `CFString` instances present in the binary.

## Usage

If you have an Objective-C binary opening in Binary Ninja should automatically process
the information. This is handled by the view, e.g. MACH-O & Shared Cache.

### Workflow

To utilize function call cleanup, the Objective-C workflow must be chosen when loading a binary for analysis.

![](../img/objc-workflow-selected.png)

This will automatically apply structure analysis as the binary is analyzed and
also translate `objc_msgSend` calls to direct method calls, where possible.