Vector35 / Vector35/binaryninja-api

Performance issues arise when importing and using large header file

Open
#7,849 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Version and Platform (required):

  • Binary Ninja Version: 5.2.8722-Stable
  • Edition: Non-Commercial
  • OS: Windows 11
  • OS Version: 25H2
  • CPU Architecture: x86_64

Bug Description:
For example, this cached_types.hpp file contains approximately 600,000 types:
Image
Parsing this header file took about 5 minutes, and checking and unchecking all the boxes also took about 5 minutes.
After importing types, applying types to any function takes about 2-3 seconds per function, which is very slow.

Steps To Reproduce:

  1. Perform a complete analysis of unpacked_GameAssembly.dll
  2. Import cached_types.hpp
  3. Modify the type of any function.

Expected Behavior:
After setting bv.set_analysis_hold(True), the application type should not be so slow. IDA Pro 9.2 does not have this problem.

Screenshots/Video Recording:
If applicable, please add screenshots/video recording here to help explain your problem.

Binary:
Uploaded through the portal: vine way watches algorithmically
The compressed file contains the target binary, header files, and the script (il2cpp.py) for importing symbols.

Additional Information:
There are no other issues, it's just that the application speed of type is very slow.

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

Reproduce the report using the supplied cached_types.hpp, target binary, and il2cpp.py, following the listed analysis, import, and function-type steps. Measure header parsing, checkbox interaction, and type application with analysis hold enabled, then identify the responsible Binary Ninja API or analysis path. Done means these operations no longer take minutes or several seconds per function.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
performance, reverse-engineering
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.