Commit Graph
4 Commits
Author SHA1 Message Date
yusufcanislek 7b9029a2ca fix: filter forwarded exports + validate --outline= empty value
P1: Export parsing now skips forwarded exports (RVA within the export
directory range points to an ASCII forwarder string, not code).

P2: --outline= (with equals but no value) now produces an explicit
error instead of silently consuming the next positional argument.
2026-03-26 12:35:26 +03:00
yusufcanislek 5717d28fde feat: PE export auto-outline + --outline CLI flag
Layer 2 — PE export auto-outline:
  Parses the PE export directory at lifter setup. Every exported function
  RVA is added to the inline policy's outline set. Calls to exported
  functions are automatically outlined with CreateCall + ABI effects.

Layer 6 — --outline CLI flag:
  --outline <addrs>  accepts comma-separated hex addresses (e.g.,
  --outline 0x140004100,0x140005000). Each address is added to the
  inline policy before lifting begins. Supports --outline=<addrs> form.
  Multiple --outline flags accumulate.

Verified:
  - calc_cout with --outline 0x140004100: lifts x*3+7 with outlined
    operator<< call (11 instructions, 1 block, ~2ms)
  - VMP 3.8.1: identical a+b+c deobfuscation (14K instructions)
  - All baseline, semantic (23/23), micro (15/15) tests pass
  - Determinism: 34 golden files match
2026-03-26 12:21:56 +03:00
yusufcanislek 196c005839 core: harden CLI/runtime context and stage setup failures 2026-03-19 01:59:13 +03:00
yusufcanislek 1ed00cc67e Refactor: reorganize lifter/ into subdirectories with PascalCase naming
Directory structure:
  lifter/core/       - LifterClass, pipeline, drivers, application, utils
  lifter/semantics/  - Semantics*.ipp, OperandUtils.ipp, opcodes
  lifter/disasm/     - Disassembler backends, mnemonic/register mappings
  lifter/memory/     - GEPTracker, MemoryPolicy, FileReader
  lifter/analysis/   - PathSolver, CustomPasses
  lifter/test/       - TestInstructions, Tester, test_vectors/

Naming convention standardized to PascalCase:
  fileReader.hpp     -> FileReader.hpp
  lifterClass.hpp    -> LifterClass.hpp
  icedDisassembler*  -> IcedDisassembler*
  utils.h/cpp        -> Utils.h/cpp
  includes.h         -> Includes.h
  pp_macros.hpp      -> PPMacros.hpp
  test_instructions* -> TestInstructions*
  tester.hpp         -> Tester.hpp

Include resolution uses cmake include-directories so no
path prefixes needed in #include directives. All script
paths updated for new test_vectors and opcodes locations.
2026-03-06 18:07:26 +03:00