Multiple definitions in HLIL SSA

Offen
#2,809 2 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@rssor arbeitet bereits daran.

Seit 31.1.2022.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

Component: Core Effort: Low Impact: Medium

Version and Platform (required):

  • Binary Ninja Version: 2.5.3140-dev
  • OS: macOS
  • OS Version: 11.3

Bug Description:

HLIL SSA form contains variables with multiple definitions for the same variable version.

Screen Shot 2021-12-29 at 3 32 14 AM

I found this bug while walking def-use chains... and unexpectedly found a cycle. I went to look at the HLIL and saw this wacky output. I do not have much experience with SSA form so if this is intended behavior I'm sorry and feel free to close.

Steps To Reproduce:

  1. Open the attached libc - note it's just from some random ctf challenge and was probably compiled from source (ie. it doesn't match any from common distros)
  2. Switch to HLIL SSA form
  3. Go to 0x73a2e

Expected Behavior:

SSA form would have a single definition for each variable version

Screenshots:

above

Additional Information:

In addition to the multiple definitions, I’m not sure the handling of writes to subsets of registers is really right:

rcx_2#0.b = /* something */

being treated as just a use is really correct? Seems misleading at best… then again, I don’t really have much experience with SSA form.

Vorherrschende Sprache
C++
Sterne
1.3k
Forks
298
Ø Merge
5 T. 5 Std.
Gemergte PRs (30 T.)
19

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Vector35/binaryninja-api

Alle Issues in Vector35/binaryninja-api

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.