Skip to content

fix(profiler): win_symbol only from an ET_EXEC module (absolute addresses) - #12

Merged
log0u7 merged 1 commit into
mainfrom
fix/win-symbol-plt
Oct 30, 2026
Merged

log0u7 merged 1 commit into
mainfrom
fix/win-symbol-plt

Conversation

@log0u7

@log0u7 log0u7 commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Found through the lictor lib-companion merge (PR log0u7/lictor#22): the emporium libret2csu.so defines its own ret2win at 0x2515, module-relative. The merged fact base carried win_symbol(ret2win, 2515) and the build produced a payload jumping to an address the runtime never maps. The win fact is now emitted only when the module is ET_EXEC: the address is absolute, usable in a chain. A PIE binary keeps the honest silence (its win needs a leak anyway). Specs 166/0, parity 8/8, concordance 33/33.

…ute space

The win_symbol fact carries the address a [qword win] payload jumps
to: it is only usable when the module is ET_EXEC (the address is
absolute). An ET_DYN module's symbol address is module-relative and
a companion library's win is not in the binary's address space - the
merged fact base must not carry an address the runtime never maps at
that value. Measured: the emporium libret2csu.so DEFINES its own
ret2win at 0x2515 (module-relative), the lib-companion merge in
lictor carried it into the fact base and the build produced a
payload jumping to 0x2515, an address the runtime never maps for the
binary. A PIE binary keeps the honest silence (a win there needs a
leak anyway).
@log0u7
log0u7 merged commit eef7ca4 into main Oct 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant