Vector35 / Vector35/binaryninja-api

namespace abstraction for functions

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

Nobody has claimed this yet.

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

Description

What is the feature you'd like to have?
Please provide a clear and concise description of what you want.

Ability to give function namespace. For example if I name function A::B::Func , test::hello and test::world i should be able to query new api bv.find_function_by_name("hello" , namespace::test) or `bv.find_function_by_name("Func", namespace::A::B)

This will be cool because of three things

  1. When #2693 gets implemented. it would be cool to have a folder section called namespace which shows all the grouping of same namespace
  2. It gives ability for us to add some abstraction to implement class and inheritance.
  3. ability to condense name. yes im looking at you c++
    image
    std::filesystem::__cxx11...ator<<<char, std::char_traits<char> >(std::operator<<<std::char_traits<char> >(__out: std::cout, __s: "[+] Cound't find output director…"), &var_d0)

can become alot shorter by making ui to not show std::. you get this ability now without losing info.

Is your feature request related to a problem?
Whenever I reverse program language that has OOP concept (C++, Obj-C, Swift, etc), only way to find function related to that class is by searching the class in function search like Classname:: which kills a lot of workflow. Another problem is when you are trying to create plugin or workflow that has to parse vtable and things like that.

TLDR

  1. workflow on function search
  2. ability to script instead of doing something like
    a. search for function related to class
    b. string parse the function name Classname::some_func becomes Classname and some_func
    c. do something with it.

I feel like I a lot of that pattern during work.

Are any alternative solutions acceptable?
Please provide a clear and concise description of any alternative solutions or features you've considered.

I don't think this is necessary needed. its more of pattern I see often. You can just create a parser and some kind of UI that can do this seperatly but I feel like this should be a feature in binja since OOP is everywhere :(.

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 reviewing the public API around the proposed find_function_by_name entry point and how function names are currently represented and searched. Define how namespace-qualified names such as A::B::Func should be parsed, queried, and displayed, then validate the behavior for the C++, Objective-C, and Swift use cases described in the issue.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.