Vector35 / Vector35/binaryninja-api

API for creating null-terminated string data variables

Open
#3,703 2 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: API Effort: Trivial Impact: Low
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

Sometimes analysis misses strings, or you're dealing with a format that you know has strings at certain offsets, etc.

There is no API for "create a (null-terminated) string data variable starting at this address". As such, we've reinvented this behavior in a few places in the core (linearview.cpp:5845, tokenizedtextview:1877, and more). So this is really a two part feature request:

  1. Consolidate any areas where we do this into the core into one true implementation.
  2. Make an API available so plugins, etc. don't have to re-implement the whole "keep reading until you find a null terminator then construct the appropriate array type" process.

This API should support UTF-{16,32} strings as well, which should be easy via an optional parameter.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the existing string-variable logic at linearview.cpp:5845 and tokenizedtextview:1877, then locate other core implementations. Consolidate the behavior into one core implementation and expose an API for plugins, including null-terminated UTF-16 and UTF-32 strings. Done means these call sites use the shared implementation and the public API supports the requested encodings.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api, reverse-engineering
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.