Add handling for `disas:` URI scheme for shareable "deep linking" to locations within binaries
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 32/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
調査の方向性
Start by tracing the existing binaryninja: URI handling and the code path used for opening or activating files and navigating to an expression. Review open file history and the binaryninjaui Python API, then compare the linked Ghidra and IDA URI formats. Done means matching disas: URIs can locate open or historical binaries by MD5, open or activate them, and navigate to the requested offset.
索引モデルが issue の本文から書いたものです。
説明
What is the feature you'd like to have?
Add support for handling the disas: URI scheme that is already supported by plugins for IDA Pro and Ghidra, for sharing cross-tool deep links to offsets within binaries, primarily to support collaboration between researchers as well as note-taking.
URIs are of the form disas://<md5-hash-of-original-binary>?offset=<offset-in-hex>
Are any alternative solutions acceptable?
We currently implement the binaryninja: URI scheme, with a slightly different format:
binaryninja:<URI>?expr=<expression>
where URI can be a file:, http:, or https: URI, a bare file path (including a bare filename to navigate in an open tab with a matching filename), or empty (to navigate in the currently active tab), and <expression> can be any expression parseable by the expression parser used by our Go to Address dialog (where unprefixed numbers are parsed as hex, not decimal).
The existing URI handling should be extended to take in disas: URIs in the common format and search for files with matching hashes among
- Currently open files
- Files in the open file history
If a match is found, it should be opened or its open tab should be activated, and navigation to the offset should be performed the same as binaryninja: URIs. Basically this would be a different entry point to a point in the same code path.
The primary issue is that we do not currently compute or store MD5 hashes for input binaries, so searching would require on-demand hashing of candidate files, or adding precomputed hashes to the database. (An alternative would be to compute MD5 hashes and store them in the open file history.)
Additional features could include other query parameters such as filename, path, view_type, il_index, etc.
Enterprise-specific URIs should also be supported.
Finally, a "copy URI for location/selection" action should be added to the UI and exposed in the binaryninjaui python API.
Additional Information:
Links to the existing implementations for Ghidra and IDA:
Ghidra: https://github.com/foundryzero/ghidra-deep-links?tab=readme-ov-file#-url-format
IDA: https://github.com/interruptlabs/heimdallr-client?tab=readme-ov-file#usage
Vector 35 employees can find additional notes by searching for "disas spec collab" on the internal wiki.
- 主要言語
- C++
- スター
- 1.3k
- フォーク
- 298
- 平均マージ
- 5日 5時間
- マージ済み PR(30日)
- 19
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Vector35/binaryninja-api のほかの issue
-
難易度 1/5 1〜3時間 初心者へのやさしさ 88/100
Vector35/binaryninja-api#8540 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
Vector35/binaryninja-api#8516 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
Vector35/binaryninja-api#8503 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
Vector35/binaryninja-api#8446 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
Vector35/binaryninja-api#8444 ·
Vector35/binaryninja-api の issue をすべて見る
似ている issue
-
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
autowarefoundation/autoware_universe#13413 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
automated-analysis bug memory-safety
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
gazebosim/gz-sensors#662 · コメント 1 件 ·