Vector35 / Vector35/binaryninja-api

Function taints `rbp` for unknown reason causing bad analysis

Open
#5,365 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

In the following screenshot, we can see the variable at rbp-0x8 is NOT annotated with var_10, which is the stack variable associated with the offset.

image

Looking at the MLIL, I see the variable is translated to

   6 @ 00401a00  int32_t rax_1 = [rbp_1 - 8].d

image

which eventually leads to the awkward HLIL that uses rbp_1[-1]:

image

Related file: mazeware.zip

Credit: https://ctfd.nusgreyhats.org/, source code: https://github.com/NUSGreyhats/greyctf24-challs-public/tree/main/quals/rev/mazeware/src-please-do-not-read-this

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 loading the related mazeware.zip sample and tracing the rbp-0x8 access through the MLIL and HLIL shown in the issue. Confirm that the stack variable is annotated with var_10 and that the resulting HLIL no longer uses rbp_1[-1].

Written by the indexing model from the issue text.

Assessment

Domain
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.