summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2016-07-28 04:42:10 -0400
committerJordan Wiens <jordan@psifertex.com>2016-07-28 04:42:10 -0400
commit508584830e65fc08ea3a756dfa651670c9e01217 (patch)
tree9e017014a11eb9581acbfdfd04b668a803259ef7
parent7ef76305ac2e893a9c25776236c5e58c554aafb9 (diff)
more work on getting started, new documentation help, remove head links
-rw-r--r--docs/about/open-source.md7
-rw-r--r--docs/dev/documentation.md39
-rw-r--r--docs/docs.css13
-rw-r--r--docs/getting-started.md92
-rw-r--r--docs/images/functionlist.pngbin0 -> 19729 bytes
-rw-r--r--docs/images/graphcontext.pngbin0 -> 69458 bytes
-rw-r--r--docs/images/graphview.pngbin0 -> 135390 bytes
-rw-r--r--docs/images/options.pngbin0 -> 46379 bytes
-rw-r--r--docs/images/xrefs.pngbin0 -> 17078 bytes
-rw-r--r--mkdocs-material/material/header.html5
-rw-r--r--mkdocs.yml23
11 files changed, 154 insertions, 25 deletions
diff --git a/docs/about/open-source.md b/docs/about/open-source.md
index 529a18e6..8f649608 100644
--- a/docs/about/open-source.md
+++ b/docs/about/open-source.md
@@ -5,9 +5,6 @@
Vector 35 is grateful for the following open source packages that are used in Binary Ninja directly or indirectly:
* Documentation
-
-The following tools are used in the generation of our documentation, but are not distributed themselves and are merely listed here in acknowledgement for the value they provide.
-
- [mkdocs] ([mkdocs license] - BSD)
- [mkdocs-material] ([mkdocs-material License] - BSD)
- [breathe] ([breathe license] - BSD)
@@ -15,6 +12,8 @@ The following tools are used in the generation of our documentation, but are not
- [sphinx] ([sphinx license] - BSD and others)
- [doxygen] ([doxygen license] - GPLv2)
+The previous tools are used in the generation of our documentation, but are not distributed themselves and are merely listed here in acknowledgement for the value they provide.
+
* UI
- [qt] ([qt license] - LGPLv3 / note, please see our [qt build instructions below](open-source.md#building-qt))
- [sourcecodepro] ([sourcecodepro license] - SIL open font license)
@@ -36,7 +35,7 @@ Binary Ninja uses [Qt 5.6] under an LGPLv3 license which requires that we host t
Please note that we offer no support for running Binary Ninja with modified Qt libraries.
1. Follow the installation requirements on the [Building Qt 5 from Git] page.
-2. Download the Qt 5.6.0 [tarball] from binary.ninja. (Note this is an unmodified 5.6 identical to that available from Qt's source control, but must be hosted locally according to the [Qt 5.6] terms.
+2. Download the Qt 5.6.0 [tarball] from binary.ninja. (Note this is an unmodified 5.6 identical to that available from Qt's source control, but must be hosted locally according to the [Qt 5.6] terms.)
3. Next, build QT using the aforementioned instructions.
4. On OS X, you will need to disable the code-signing signature since it would otherwise prevent changes to binaries or shared libraries. We recommend a tool such as [unsign].
5. Finally, replace the built libraries:
diff --git a/docs/dev/documentation.md b/docs/dev/documentation.md
new file mode 100644
index 00000000..830bd4ec
--- /dev/null
+++ b/docs/dev/documentation.md
@@ -0,0 +1,39 @@
+# Building Documentation
+
+## CLA
+
+To contribute to the Binary Ninja documentation, first sign the [contribution license agreement] and send it to [Vector 35].
+
+## Prerequisites
+
+- [sphinx]
+- [breathe] (note that on windows, breathe needs a small [fix])
+- [mkdocs]
+- [doxygen]
+
+
+## Building
+
+ git clone https://github.com/Vector35/binaryninja-api/
+ cd binaryninja-api
+ cd api
+ mkdocs build
+ echo User documentation available in site/
+ cd api-docs
+ make html
+ echo API documentation available in build/html
+
+## Changing
+Changing documentation for the API itself is fairly straight forward. Use [doxygen style comment blocks](https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html) in C++ and C, and [restructured text blocks](http://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html) for python for the source. The user documentation is located in the `api/docs/` folder and the API documentation is generated from the config in the `api/api-docs` folder.
+
+!!! Tip "Tip"
+ When updating user documentation, the `mkdoc serve` feature is particularly helpful.
+
+[contribution license agreement]: https://binary.ninja/cla.pdf
+[Vector 35]: https://vector35.com/
+[fix]: https://github.com/michaeljones/breathe/issues/271
+[mkdocs]: http://www.mkdocs.org/
+[breathe]: https://github.com/michaeljones/breathe
+[sphinx]: http://www.sphinx-doc.org/en/stable/index.html
+[doxygen]: http://www.stack.nl/~dimitri/doxygen/
+[doxblocks]: doxygen
diff --git a/docs/docs.css b/docs/docs.css
index e69de29b..95a04efe 100644
--- a/docs/docs.css
+++ b/docs/docs.css
@@ -0,0 +1,13 @@
+code {
+ color: #000;
+}
+
+img {
+ display: inline-block;
+ float: right;
+}
+
+.admonition {
+ background: rgb(128, 198, 223);
+ color: #333;
+}
diff --git a/docs/getting-started.md b/docs/getting-started.md
index d6673d13..902e3043 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -2,12 +2,12 @@
Welcome to Binary Ninja. This introduction document is meant to quickly guide you over some of the most common uses of Binary Ninja.
+![license popup](/images/license-popup.png "License Popup")
+
## License
When you first run Binary Ninja, it will prompt you for your license key. You should have received your license key via email after your purchase. If not, please contact [support].
-![license popup](/images/license-popup.png "License Popup")
-
Once the license key is installed, you can change it, back it up, or otherwise inspect it simply by looking in:
- OS X: `~/Library/Application Support/Binary Ninja`
@@ -26,31 +26,107 @@ You can load files in many ways:
![recent files](/images/recent.png "Recent Files")
+
## Analysis
+![auto analysis](/images/analysis.png "Auto Analysis")
+
As soon as you open a file, Binary Ninja begins its auto-analysis.
Even while Binary Ninja is analyzing a binary, the UI should be responsive. Not only that, but because the analysis prioritizes user-requested analysis, you can start navigating a binary immediately and any functions you select will be added to the top of the analysis queue. The current progress through a binary is shown in the status bar, but note that the total number of items left to analyze will go up as well as the binary is processed and more items are discovered that require analysis.
-![auto analysis](/images/analysis.png "Auto Analysis")
-
Errors or warnings during the load of the binary are also shown in the status bar, along with an icon (in the case of the image above, a large number of warnings were shown). The most common warnings are from incomplete lifting and can be safely ignored. If the warnings include a message like `Data flow for function at 0x41414141 did not terminate`, then please report the binary to the [bug database][issues].
## Interacting
-- TBD
+### Graph View
-## Troubleshooting
+![graph view](/images/graphview.png "Graph View")
+
+The default view in Binary Ninja when opening a binary is a graph view that groups the basic blocks of disassembly into visually distinct blocks with edges showing control flow between them.
+
+![graph view context](/images/graphcontext.png "Graph View Contet Menu")
+
+Features of the graph view include:
+
+- Ability to double click edges to quickly jump between locations
+- Zoom (CTRL-mouse wheel)
+- Vertical Scrolling (Side scroll bar as well as mouse wheel)
+- Horizontal Scrolling (Bottom scroll bar as well as SHIFT-mouse wheel)
+- Individual highlighting of arguments, addresses, immediate values
+- Edge colors indicate whether the path is the true or false case of a conditional jump (a color-blind option in the preferences is useful for those with red-green color blindness)
+- Context menu that can trigger some function-wide actions as well as some specific to the highlighted instruction (such as inverting branch logic or replacing a specific function with a NOP)
+
+### View Options
+
+![options](/images/options.png "options")
+
+Each of the views (Hex, Graph, Linear) have a variety of options configurable in the bottom-right of the UI.
+
+Current options include:
+
+- Hex
+ - Raw
+ - Raw: Raw hex view with addresses based on file offsets
+ - ELF:
+ - Highlight
+ - Background highlight
+ - None
+ - Column
+ - Byte value
+ - Color highlight
+ - None
+ - ASCII and printable
+ - Modification
+ - Contrast
+ - Normal
+ - Medium
+ - Highlight
-- TBD
+### Hex View
+
+### Xrefs View
+
+![xrefs](/images/xrefs.png "xrefs")
+
+The xrefs view in the lower-left shows all cross-references to a given location or reference. Note that the cross-references pane will change depending on whether an entire line is selected (all cross-references to that address are shown), or whether a specific token within the line is selected.
+
+One fun trick that the xrefs view has up its sleeve: when in [Hex View](#hexview)
+
+### Linear View
+
+
+
+### Function List
+
+![function list](/images/functionlist.png "Function List")
+
+The function list in Binary Ninja shows the list of functions currently identified. As large binaries are analyzed, the list may grow during analysis. The function list starts with known functions such as the entry point, exports, or using other features of the binary file format and explores from there to identify other functions.
+
+The function list also highlights imports, and functions identified with symbols in different colors to make them easier to identify.
+
+!!! Tip "Tip"
+ To search in the function list, just click to make sure it's focused and start typing!
+
+## Updates
+
+
+## Preferences
+
+
+## Troubleshooting
### Common problems
-- TBD
+- If you are having problems finding your license or the installers, you can always [recover] either with a self-service email mechanism.
+- If experiencing problems with Windows UAC permissions, the easiest fix is to
+- Always check both closed and open [issues](https://github.com/Vector35/binaryninja-api/issues) on the github issues search.
+
### Getting Support
Vector 35 offers a number of ways to get Binary Ninja [support].
+[recover]: https://binary.ninja/recover.html
[support]: https://binary.ninja/support.html
[issues]: https://github.com/Vector35/binaryninja-api/issues
diff --git a/docs/images/functionlist.png b/docs/images/functionlist.png
new file mode 100644
index 00000000..2fb2d475
--- /dev/null
+++ b/docs/images/functionlist.png
Binary files differ
diff --git a/docs/images/graphcontext.png b/docs/images/graphcontext.png
new file mode 100644
index 00000000..d453f5e1
--- /dev/null
+++ b/docs/images/graphcontext.png
Binary files differ
diff --git a/docs/images/graphview.png b/docs/images/graphview.png
new file mode 100644
index 00000000..0d190a9f
--- /dev/null
+++ b/docs/images/graphview.png
Binary files differ
diff --git a/docs/images/options.png b/docs/images/options.png
new file mode 100644
index 00000000..10d70617
--- /dev/null
+++ b/docs/images/options.png
Binary files differ
diff --git a/docs/images/xrefs.png b/docs/images/xrefs.png
new file mode 100644
index 00000000..ab7f056f
--- /dev/null
+++ b/docs/images/xrefs.png
Binary files differ
diff --git a/mkdocs-material/material/header.html b/mkdocs-material/material/header.html
index f910b5b8..1dcd62b7 100644
--- a/mkdocs-material/material/header.html
+++ b/mkdocs-material/material/header.html
@@ -34,9 +34,12 @@
<a href="https://github.com/{{ author }}" title="@{{ author }} on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
{% endif %}
+ {% if config.extra.disablesearch %}
+ {% else %}
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
+ {% endif %}
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
@@ -51,4 +54,4 @@
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
-</nav> \ No newline at end of file
+</nav>
diff --git a/mkdocs.yml b/mkdocs.yml
index ed19cee3..b7be3e5a 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,6 +1,6 @@
site_name: 'Binary Ninja Documentation'
site_url: 'https://docs.binary.ninja/'
-repo_url: 'https://github.com/vector35/binaryninja-api/'
+repo_url: 'https://binary.ninja/'
repo_name: 'github'
site_description: 'Documentation for the Binary Ninja reverse engineering platform'
site_author: 'Vector 35 LLC'
@@ -19,15 +19,16 @@ markdown_extensions:
pages:
- Home: 'index.md'
- - Getting Started: 'getting-started.md'
- - User Guide:
- - Installing: 'guide/installing.md'
- - Running: 'guide/running.md'
- - Interface: 'guide/interface.md'
- - Types Library: 'guide/type.md'
- - Using Plugins: 'guide/plugins.md'
- - Troubleshooting: 'guide/troubleshooting.md'
+ - Getting Started Guide: 'getting-started.md'
+ #- User Guide:
+ #- Installing: 'guide/installing.md'
+ #- Running: 'guide/running.md'
+ #- Interface: 'guide/interface.md'
+ #- Types Library: 'guide/type.md'
+ #- Using Plugins: 'guide/plugins.md'
+ #- Troubleshooting: 'guide/troubleshooting.md'
- Developer Guide:
+ - Contributing Documentation: 'dev/documentation.md'
- Plugin Design: 'dev/plugins.md'
- API: 'dev/api.md'
- About:
@@ -35,7 +36,5 @@ pages:
- Open Source: 'about/open-source.md'
extra:
- author:
- github: 'Vector35'
- twitter: 'vector_35'
+ disablesearch: True
logo: 'images/logo.png'