NationalSecurityAgency / ghidra

Ghidra is a software reverse engineering (SRE) framework
https://www.nsa.gov/ghidra
Apache License 2.0
50.43k stars 5.76k forks source link

Stack Frame sharing #6168

Open Wall-AF opened 7 months ago

Wall-AF commented 7 months ago

Is your feature request related to a problem? Please describe. I'm always frustrated when inlining of a function call either isnt available (i.e used multiple times within the function) or is impossibe to determine (i.e. SEH implementations whereby calls are data driven).

Describe the solution you'd like When a "stack frame" is setup for a function this frame needs to be passable/assignable to other functions in order for them to access the correct stack-based (parameter/local variables) when performing the static decompilation.

Describe alternatives you've considered Creating a datatype containing the information in a particular "stack frame" and assigning a pointer to that to the other function's stack base register. This can only hold the local variables as you would need to assign the register to the middle of the datatype (may be possible with "Adjust Pointer Offset" somehow). Also as analysis progresses the original stack frame will change, obsoleting your datatype!

Additional context See discussion #6153 and issue #2477.

Possible Implementable Solution Assign the address of the function's entry point to each "stack frame" created and add an option in the Edit Function dialog to "Use Alternate Stack Frame" where the user can enter the appropriate address.

Wall-AF commented 4 months ago

Help, anyone???