summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2024-04-23 14:21:30 -0400
committerJordan Wiens <jordan@psifertex.com>2024-04-23 14:21:30 -0400
commit98a5094bea61e02fb9184707b8bad6e09b9f5574 (patch)
treee16be5006463bc669bbd6e934d8200d31b3980d5
parentaa4ad795075bf513f219cfce8eec782e94e1756b (diff)
initial advanced binary search documentation
-rw-r--r--docs/guide/index.md1
-rw-r--r--docs/img/find.pngbin124058 -> 149526 bytes
-rw-r--r--python/binaryview.py9
3 files changed, 10 insertions, 0 deletions
diff --git a/docs/guide/index.md b/docs/guide/index.md
index db20be62..1af0012c 100644
--- a/docs/guide/index.md
+++ b/docs/guide/index.md
@@ -410,6 +410,7 @@ The normal find dialog also exists as a sidebar panel that allows persistent, ta
The search types are available from a drop-down next to the text input field and include:
+ - Advanced Binary Search: A new search type using the [bv.search](https://dev-api.binary.ninja/binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.search) syntax (supporting regular expressions and wildcard hex strings)
- Escaped: Escaped strings such as `OneString\x09\Tabsx09Another`
- Hex: All values much be valid hex characters such as `ebfffc390` and the bytes will only be searched for in this particular order
- Raw: A simple string search that matches the exact string as specified
diff --git a/docs/img/find.png b/docs/img/find.png
index 1c790edb..6a10a014 100644
--- a/docs/img/find.png
+++ b/docs/img/find.png
Binary files differ
diff --git a/python/binaryview.py b/python/binaryview.py
index d740ce92..9ef7a913 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -8700,6 +8700,15 @@ class BinaryView:
:return: A generator object that yields the offset and matched DataBuffer for each match found.
:rtype: QueueGenerator
+ :Example:
+ >>> from binaryninja import load
+ >>> bv = load('/bin/ls')
+ >>> print(bv)
+ <BinaryView: '/bin/ls', start 0x100000000, len 0x182f8>
+ >>> bytes(list(bv.search("50 ?4"))[0][1]).hex()
+ '5004'
+ >>> bytes(list(bv.search("[\\x20-\\x25][\\x60-\\x67]"))[0][1]).hex()
+ '2062'
"""
if start is None:
start = self.start