Support dataflow tracking that is wider than 64bit

Open
#6,987 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp

Research direction

Start by locating the dataflow tracking implementation that currently uses uint64_t, then review how wider XMM-register operations such as copy and xor are represented. Evaluate whether the intx library fits the proposed 128-, 256-, and 512-bit range, and consider the linked debugger issue before defining completion as correct tracking for those widths.

Written by the indexing model from the issue text.

Description

Component: Core Core: Dataflow Effort: High Impact: Medium

Currently we are tracking dataflow using an uint64_t, which works great, but would break if the input is wider than that. Modern compilers, especially MSVC, tend to use XMM registers when it can, and the underlying operation is often times just trivial, i.e., copy, xor, etc. These would all be handled if we support up to 128-, 256-, 512- bit dataflow.

https://github.com/chfast/intx might be a helpful library for the purpose. Also we probably wouldn't need arbitrary precession integer arithmetic -- 512 bit is honestly wide enough for most practical usage scenario

Not super related, but worth linking together: https://github.com/Vector35/debugger/issues/184

Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

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.

More from Vector35/binaryninja-api

All issues in Vector35/binaryninja-api

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.