11---
2- eatmycode_version : " 1.1 .0"
2+ eatmycode_version : " 1.2 .0"
33---
44
55# Extensions — optional tooling on top of the core
@@ -17,10 +17,10 @@ roadmap milestone applies; maturity-based status.
1717
1818## Status
1919
20- ` done ` — the history coverage tracker is tested in CI (observed:
21- ` Ran 4 tests … OK ` ); pipes are exercised by many suites; AFL and r2 need
22- optional extras (` fuzz ` , ` RE ` ) and are untested here; the IDA plugin needs
23- IDA Pro and is untested in CI.
20+ ` done ` — the history coverage tracker has its own suite, run manually
21+ rather than by CI (observed: ` Ran 4 tests … OK ` ); pipes are exercised by
22+ many suites; AFL and r2 need optional extras (` fuzz ` , ` RE ` ) and are
23+ untested here; the IDA plugin needs IDA Pro and is untested in CI.
2424
2525## Code Structure
2626
@@ -54,15 +54,15 @@ file with IDA-specific conventions; treat it as its own style domain.
5454- Everything here consumes only public APIs of [ core.md] ( core.md ) (hooks,
5555 ` mem ` , ` arch.regs ` , ` save/restore ` ) and [ os-base.md] ( os-base.md ) (heap,
5656 stdio, ` set_syscall ` /` set_api ` ). Nothing in ` qiling/os ` , ` qiling/loader ` ,
57- or ` qiling/arch ` may import from here except the documented cases:
58- ` qiling/cli.py:22-23 ` for coverage/report, ` qiling/arch/utils.py:94 `
59- lazy r2, and the multitask/mcu owners noted above.
57+ or ` qiling/arch ` may import from here except the exceptions listed under
58+ "Downward imports only" in the root System Design section.
6059- ` collect_coverage ` activates hooks on enter and dumps on exit even on
6160 exceptions (` qiling/extensions/coverage/utils.py:48-63 ` ); `qltool
6261 --coverage-format` lists ` factory.formats` ( ` qiling/cli.py:240`).
6362- The heap sanitizer replaces ` ql.os.heap ` with a compatible object that
64- surrounds chunks with canaries and detects double-free/UAF; it hooks
65- memory access to report faults (` qiling/extensions/sanitizers/heap.py:29 ` ).
63+ surrounds chunks with canaries and detects double-free/UAF; ` alloc ` and
64+ ` free ` install memory hooks on the canaries to report faults
65+ (` qiling/extensions/sanitizers/heap.py:97-107 ` , ` :125 ` ).
6666- ` pipe.py ` streams implement the ` ql_file ` surface expected by the fd
6767 table so they can be assigned to ` ql.os.stdin/stdout/stderr ` .
6868- AFL: ` ql_afl_fuzz ` wraps ` unicornafl.uc_afl_fuzz ` with input placement,
@@ -98,8 +98,9 @@ file with IDA-specific conventions; treat it as its own style domain.
9898 tenda_ac15,dlink_dir815,rt_n12_b1}` pair AFL with ` pipe.py` and
9999 ` set_syscall ` ([ os-posix.md] ( os-posix.md ) ) or MCU mode
100100 ([ os-baremetal.md] ( os-baremetal.md ) ).
101- - ` pipe.py ` is used by ` tests/test_pe.py ` , ` test_windows_stdio.py ` ,
102- ` test_riscv.py ` , ` test_windows_cpp_x86.py ` , and ` test_kernel_proxy.py ` .
101+ - ` pipe.py ` is used by ` tests/test_elf.py ` , ` test_pe.py ` ,
102+ ` test_windows_stdio.py ` , ` test_riscv.py ` , ` test_windows_cpp_x86.py ` ,
103+ ` test_windows_cpp_x8664.py ` , and ` test_kernel_proxy.py ` .
103104- The IDA plugin offers a front end comparable to [ debugger.md] ( debugger.md ) .
104105
105106## How to Test
0 commit comments