-
Notifications
You must be signed in to change notification settings - Fork 407
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
The Ghidra frontend does not resolve indirect jumps or use Ghidra's analysis for that. Instead, the resulting control flow will simply miss the corresponding edges. The resulting CFG will contain disconnected branches.
This is especially relevant since indirect jumps are frequently used to implement switch-case-expressions. Any flow analysis on such a program will be incomplete.
To Reproduce
Steps to reproduce the behavior:
- (Optional) Recompile with your compiler of choice
- You need to verify that the program actually uses a jump table!
- You may need to modify the program to force that!
- Import the binary:
importCode("../indirect-jump/test", "broken-jumps", language="GHIDRA") - Inspect the generated CFG:
cpg.method("main").plotDotCfg
Expected behavior
The CFG contains edges for each case branch, if it can be recovered by Ghidra.
Screenshots
Desktop
- OS Ubuntu 25.04
- Joern Version 4.0.468
- Java Version 21.0.9
- GCC Version
gcc (Ubuntu 14.2.0-19ubuntu2) 14.2.0(used to compile the provided binary)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working