-
Notifications
You must be signed in to change notification settings - Fork 269
Closed
Labels
Component: CoreIssue needs changes to the coreIssue needs changes to the coreCore: LLILIssue involves Low Level ILIssue involves Low Level ILEffort: LowIssues require < 1 week of workIssues require < 1 week of workImpact: MediumIssue is impactful with a bad, or no, workaroundIssue is impactful with a bad, or no, workaround
Milestone
Description
Version and Platform (required):
- Binary Ninja Version: 5.2.8614
- Edition: Ultimate
- OS: macOS
- OS Version: 15.5
- CPU Architecture: M1
Bug Description:
When a call has a target which cannot be resolved, trying to set user stack adjustment on the call has no effect. This can lead to mismatched stack pointers in later blocks which cannot be easily fixed.
Steps To Reproduce:
- New Mapped Data
- Assemble x86:
cmp esi, 0
je after
mov eax, 1000
push ecx
call eax
after:
ret
- Create function at the start
- Observe the return has a mismatched stack pointer
- Right click call to eax and try to Set Stack Adjustment to 4
- Observe no change to analysis
Expected Behavior:
I expected setting the stack adjustment of a call to actually have an effect
Screenshots/Video Recording:
Additional Information:
Setting a user call type on the call fixes this by bypassing the early-exit in the stack resolver. Looks like this is bailing early at core/stackadjustresolver.cpp:231
Reported by loadlibrary on Slack
xorhex
Metadata
Metadata
Assignees
Labels
Component: CoreIssue needs changes to the coreIssue needs changes to the coreCore: LLILIssue involves Low Level ILIssue involves Low Level ILEffort: LowIssues require < 1 week of workIssues require < 1 week of workImpact: MediumIssue is impactful with a bad, or no, workaroundIssue is impactful with a bad, or no, workaround