summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Palmisciano <jp@jonpalmisc.com>2022-07-08 11:29:20 -0400
committerJon Palmisciano <jp@jonpalmisc.com>2022-07-08 11:29:20 -0400
commitcee57f523fa1606cbb804d54bd0fc250b3a2c4cc (patch)
treecb9a29aa492f7dcb1992813d152c7f0252724422
parentb9c6552982ab353c57259a577b91cff986646566 (diff)
Add docs for official Objective-C plugin
-rw-r--r--docs/guide/objectivec.md44
-rw-r--r--docs/img/objc_analyze_action.pngbin0 -> 107944 bytes
-rw-r--r--docs/img/objc_workflow_selected.pngbin0 -> 37469 bytes
-rw-r--r--mkdocs.yml1
4 files changed, 45 insertions, 0 deletions
diff --git a/docs/guide/objectivec.md b/docs/guide/objectivec.md
new file mode 100644
index 00000000..ab2a3160
--- /dev/null
+++ b/docs/guide/objectivec.md
@@ -0,0 +1,44 @@
+# Objective-C (Beta)
+
+Recent version of Binary Ninja ship with [an additional plugin](https://github.com/Vector35/workflow_objc)
+for assisting with Objective-C analysis. It provides both a [workflow](https://docs.binary.ninja/dev/workflows.html)
+and a plugin command for enhancing Objective-C binary 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 you are analyzing for the first time, or one
+you are returning to, you can run the "Objective-C — Analyze Structures" action
+from the command palette or plugins menu to perform Objective-C structure
+analysis. _If you have already marked up Objective-C structures or modified
+function types yourself, be aware that they may be overwritten when this action
+is run._
+
+![](../img/objc_analyze_action.png)
+
+### Workflow
+
+To utilize function call cleanup, the workflows feature must be enabled, and the
+Objective-C workflow must be chosen when loading a binary for analysis.
+
+![](../img/objc_workflow_selected.png)
+
+This will automatically apply strucutre analysis as the binary is analyzed and
+also translate `objc_msgSend` calls to direct method calls, where possible.
diff --git a/docs/img/objc_analyze_action.png b/docs/img/objc_analyze_action.png
new file mode 100644
index 00000000..2e486778
--- /dev/null
+++ b/docs/img/objc_analyze_action.png
Binary files differ
diff --git a/docs/img/objc_workflow_selected.png b/docs/img/objc_workflow_selected.png
new file mode 100644
index 00000000..51ecef4f
--- /dev/null
+++ b/docs/img/objc_workflow_selected.png
Binary files differ
diff --git a/mkdocs.yml b/mkdocs.yml
index aaf26ce4..81fe7b84 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -36,6 +36,7 @@ nav:
- Plugins: 'guide/plugins.md'
- Types: 'guide/type.md'
- Debugger (Beta): 'guide/debugger.md'
+ - Objective-C (Beta): 'guide/objectivec.md'
- Troubleshooting: 'guide/troubleshooting.md'
- Developer Guide:
- API: 'dev/api.md'