Evidence and uncertainty
Reverse engineering combines observations with interpretation. MachLift keeps those distinctions visible so you can judge what a result supports.
Different facts provide different evidence
Section titled “Different facts provide different evidence”A decoded instruction describes bytes at an address. A symbol records information supplied by the binary. A function candidate is an analysis result. These facts are related, but a symbol alone does not prove a complete function boundary or recover its original signature.
Recovered Swift declarations use supported metadata. Their presence does not mean the full implementation or every original type has been recovered.
Approximate pseudocode
Section titled “Approximate pseudocode”Pseudocode presents supported machine semantics in a readable Swift-like form. Names, types, calling conventions, and higher-level intent may be incomplete. Inspect reported assumptions and the associated disassembly.
The output does not promise exact source recovery. SwiftUI reconstruction is a separate planned semantic capability, not an implication of readable Swift-like output.
Unresolved means unresolved
Section titled “Unresolved means unresolved”An unknown destination, unsupported instruction shape, or unrecovered semantic construct should remain explicit. A plausible interpretation is not a substitute for evidence.
Address mappings let you trace supported output back to instructions. They provide provenance, rather than a guarantee of the original program’s intent.
Completion and coverage
Section titled “Completion and coverage”Converged analysis has drained the work its implemented passes could find. It has not proven that every original function or indirect target exists in the result. Completion state, recovery coverage, and confidence answer different questions.
See the current scope and troubleshooting guide when interpreting partial output.