mirror of
https://codeberg.org/reverse-skill-lab/exe-reverse
synced 2026-11-15 20:44:20 +08:00
An empty pair list had two causes and one verdict. When the run never found the import table at all, the report said needs-trace, which sends the reader off to write a trace of the protector's resolver -- the right move for a table full of handles and the wrong move for a table this run simply never located. The misdiagnosis is the expensive kind: it costs a debugger session and it looks like progress. decide_result now returns no-slots when the inventory is empty, and the printed hint says which of the two it is (supply --iat, or reconstruct the table). no-slots exits 1 with needs-trace, because the run did not do the job it was asked to do; the docstring's exit code table says so. The reference gains the matching sentence in the inventory step: an inventory that came back empty is a finding about the run, not a table that holds no addresses. Test: test_no_slot_values_is_its_own_verdict pins both sides -- no slots plus unpaired calls is no-slots, some slots plus unpaired calls is still needs-trace -- and the existing token test now carries a slot count so it cannot pass for the wrong reason.