smallworld-re 1.0.2__tar.gz → 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/PKG-INFO +76 -43
- smallworld_re-1.0.2/smallworld_re.egg-info/PKG-INFO → smallworld_re-2.0.0/README.md +40 -61
- smallworld_re-2.0.0/pyproject.toml +56 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/__init__.py +8 -0
- smallworld_re-2.0.0/smallworld/analyses/analysis.py +29 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/code_coverage.py +1 -2
- smallworld_re-2.0.0/smallworld/analyses/colorizer.py +449 -0
- smallworld_re-2.0.0/smallworld/analyses/colorizer_def_use.py +217 -0
- smallworld_re-2.0.0/smallworld/analyses/colorizer_summary.py +190 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/field_analysis.py +7 -8
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/hints.py +1 -1
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/malloc.py +2 -2
- smallworld_re-2.0.0/smallworld/analyses/trace_execution.py +160 -0
- smallworld_re-2.0.0/smallworld/analyses/trace_execution_types.py +42 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/divergence.py +1 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/model.py +5 -6
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr_nwbt.py +3 -4
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_coverage.py +2 -3
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_reachable.py +2 -3
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/control_flow_tracer.py +2 -3
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/pointer_finder.py +2 -3
- smallworld_re-2.0.0/smallworld/analyses/unstable/utils/tui.py +71 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/__init__.py +3 -1
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/angr.py +30 -9
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/__init__.py +2 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/aarch64.py +1 -1
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/amd64.py +0 -4
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/arm.py +0 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/i386.py +0 -2
- smallworld_re-2.0.0/smallworld/emulators/angr/machdefs/loongarch.py +340 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/machdef.py +1 -8
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips.py +0 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips64.py +0 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/ppc.py +1 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/riscv.py +8 -10
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/xtensa.py +7 -4
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/emulator.py +22 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/__init__.py +37 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/ghidra.py +513 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/__init__.py +31 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/aarch64.py +289 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/amd64.py +185 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/arm.py +370 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/i386.py +109 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/loongarch.py +162 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/machdef.py +81 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/mips.py +163 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/mips64.py +186 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/ppc.py +98 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/riscv.py +208 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/xtensa.py +21 -0
- smallworld_re-2.0.0/smallworld/emulators/ghidra/typing.py +28 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/hookable.py +18 -4
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/__init__.py +2 -2
- smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/aarch64.py +268 -0
- smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/amd64.py +163 -0
- smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/arm.py +285 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/i386.py +30 -7
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/machdef.py +9 -16
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips.py +49 -5
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips64.py +57 -5
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/ppc.py +38 -13
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/panda.py +146 -44
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/__init__.py +2 -0
- smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/aarch64.py +299 -0
- smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/amd64.py +321 -0
- smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/arm.py +309 -0
- smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/i386.py +131 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/machdefs/machdef.py +2 -23
- smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/mips.py +194 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/unicorn.py +52 -13
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/helpers.py +4 -19
- smallworld_re-2.0.0/smallworld/hinting/hinting.py +44 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/hints.py +50 -18
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/bsid.py +8 -8
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/logging.py +4 -2
- smallworld_re-2.0.0/smallworld/platforms/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/__init__.py +36 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/aarch64.py +450 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/amd64.py +463 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/arm.py +519 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/i386.py +258 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/loongarch.py +270 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/mips.py +321 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/mips64.py +313 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/platformdef.py +97 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/powerpc.py +259 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/riscv.py +257 -0
- smallworld_re-2.0.0/smallworld/platforms/defs/xtensa.py +96 -0
- {smallworld_re-1.0.2/smallworld → smallworld_re-2.0.0/smallworld/platforms}/platforms.py +3 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/__init__.py +2 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/aarch64.py +0 -9
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/amd64.py +6 -28
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/arm.py +0 -11
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/cpu.py +0 -11
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/i386.py +0 -7
- smallworld_re-2.0.0/smallworld/state/cpus/loongarch.py +299 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/mips.py +4 -47
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/mips64.py +18 -58
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/powerpc.py +2 -9
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/riscv.py +1 -11
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/xtensa.py +0 -5
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/code.py +44 -2
- smallworld_re-2.0.0/smallworld/state/memory/elf/__init__.py +7 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/__init__.py +3 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/coredump.py +46 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/__init__.py +27 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/aarch64.py +46 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/amd64.py +40 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/arm.py +53 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/i386.py +30 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/mips.py +55 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/mips64.py +57 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/ppc.py +82 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/prstatus.py +129 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/elf.py +225 -61
- smallworld_re-2.0.0/smallworld/state/memory/elf/register_state.py +36 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/__init__.py +2 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/aarch64.py +3 -1
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/amd64.py +4 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/arm.py +4 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/i386.py +4 -2
- smallworld_re-2.0.0/smallworld/state/memory/elf/rela/loongarch.py +32 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/rela/mips.py +66 -0
- smallworld_re-2.0.0/smallworld/state/memory/elf/rela/ppc.py +62 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/structs.py +3 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/heap.py +2 -2
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/memory.py +18 -0
- smallworld_re-2.0.0/smallworld/state/memory/pe/__init__.py +3 -0
- smallworld_re-2.0.0/smallworld/state/memory/pe/pe.py +361 -0
- smallworld_re-2.0.0/smallworld/state/memory/pe/structs.py +60 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/__init__.py +2 -0
- smallworld_re-2.0.0/smallworld/state/memory/stack/loongarch.py +26 -0
- smallworld_re-2.0.0/smallworld/state/models/__init__.py +33 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/systemv.py +80 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/systemv.py +78 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/armel/systemv/systemv.py +82 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/systemv.py +77 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/fmt_print.py +915 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/fmt_scan.py +864 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/math.py +362 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/signal.py +71 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/stdio.py +1305 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/stdlib.py +595 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/string.py +674 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/time.py +340 -0
- smallworld_re-2.0.0/smallworld/state/models/c99/utils.py +89 -0
- smallworld_re-2.0.0/smallworld/state/models/cstd.py +759 -0
- smallworld_re-2.0.0/smallworld/state/models/errno.py +581 -0
- smallworld_re-2.0.0/smallworld/state/models/filedesc.py +515 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/i386/systemv/systemv.py +71 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/systemv.py +83 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/mips/systemv/systemv.py +78 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/systemv.py +98 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/systemv.py +96 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/systemv.py +78 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/models/model.py +27 -2
- smallworld_re-2.0.0/smallworld/state/models/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/posix/libgen.py +123 -0
- smallworld_re-2.0.0/smallworld/state/models/posix/signal.py +690 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/systemv.py +93 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/__init__.py +1 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/__init__.py +12 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/signal.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/stdio.py +265 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/stdlib.py +169 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/string.py +139 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/time.py +61 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/__init__.py +6 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/libgen.py +16 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/signal.py +157 -0
- smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/systemv.py +85 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/state.py +65 -24
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/unstable/elf.py +16 -31
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/utils.py +6 -1
- smallworld_re-2.0.0/smallworld_re.egg-info/PKG-INFO +222 -0
- smallworld_re-2.0.0/smallworld_re.egg-info/SOURCES.txt +378 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/requires.txt +9 -5
- smallworld_re-1.0.2/README.md +0 -152
- smallworld_re-1.0.2/setup.py +0 -61
- smallworld_re-1.0.2/smallworld/analyses/analysis.py +0 -88
- smallworld_re-1.0.2/smallworld/analyses/colorizer.py +0 -682
- smallworld_re-1.0.2/smallworld/analyses/colorizer_summary.py +0 -100
- smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/aarch64.py +0 -93
- smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/amd64.py +0 -71
- smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/arm.py +0 -89
- smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/aarch64.py +0 -310
- smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/amd64.py +0 -326
- smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/arm.py +0 -321
- smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/i386.py +0 -137
- smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/mips.py +0 -202
- smallworld_re-1.0.2/smallworld/hinting/hinting.py +0 -214
- smallworld_re-1.0.2/smallworld/state/memory/elf/__init__.py +0 -3
- smallworld_re-1.0.2/smallworld/state/memory/elf/rela/mips.py +0 -45
- smallworld_re-1.0.2/smallworld/state/memory/elf/rela/ppc.py +0 -45
- smallworld_re-1.0.2/smallworld/state/models/__init__.py +0 -6
- smallworld_re-1.0.2/smallworld/state/models/x86/__init__.py +0 -2
- smallworld_re-1.0.2/smallworld/state/models/x86/microsoftcdecl.py +0 -35
- smallworld_re-1.0.2/smallworld/state/models/x86/systemv.py +0 -240
- smallworld_re-1.0.2/smallworld_re.egg-info/SOURCES.txt +0 -170
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/LICENSE.txt +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/setup.cfg +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/guards.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/forced_exec.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/basic.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/underlay.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/base.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/nwbt.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/typedefs.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/utils.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/visitor.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/aarch64_arch.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/amd64_arch.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/i386_arch.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/default.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exceptions.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/bounds.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/default.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/terminate.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/factory.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/default.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/fixups.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/memtrack.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/scratch.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/simos.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/utils.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/machdefs/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/exceptions.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/exceptions.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/ctypes.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/unstable/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/unstable/ghidra.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/unstable/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/utils.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/aarch64.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/arm.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/instructions.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/mips.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/x86.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/py.typed +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/rela.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/riscv64.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/xtensa.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/aarch64.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/amd64.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/arm.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/i386.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips64.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/ppc.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/riscv.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/stack.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/xtensa.py +0 -0
- /smallworld_re-1.0.2/smallworld/state/models/posix.py → /smallworld_re-2.0.0/smallworld/state/models/_posix.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/models/mmio.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/unstable/__init__.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/x86_registers.py +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/dependency_links.txt +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/entry_points.txt +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/not-zip-safe +0 -0
- {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/top_level.txt +0 -0
@@ -1,20 +1,43 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: smallworld-re
|
3
|
-
Version:
|
3
|
+
Version: 2.0.0
|
4
4
|
Summary: An emulation stack tracking library
|
5
|
-
Home-page: https://github.com/smallworld-re/smallworld
|
6
5
|
Author: MIT Lincoln Laboratory
|
7
6
|
Author-email: smallworld@ll.mit.edu
|
8
|
-
License: MIT
|
7
|
+
License: MIT License
|
8
|
+
|
9
|
+
© 2023 Massachusetts Institute of Technology
|
10
|
+
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
12
|
+
this software and associated documentation files (the "Software"), to deal in
|
13
|
+
the Software without restriction, including without limitation the rights to
|
14
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
15
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
16
|
+
so, subject to the following conditions:
|
17
|
+
|
18
|
+
The above copyright notice and this permission notice shall be included in all
|
19
|
+
copies or substantial portions of the Software.
|
20
|
+
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
26
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27
|
+
SOFTWARE.
|
28
|
+
|
29
|
+
Project-URL: Homepage, https://github.com/smallworld-re/smallworld
|
30
|
+
Project-URL: Issues, https://github.com/smallworld-re/smallworld/issues
|
9
31
|
Requires-Python: >=3.10
|
10
32
|
Description-Content-Type: text/markdown
|
11
33
|
License-File: LICENSE.txt
|
34
|
+
Requires-Dist: angr
|
35
|
+
Requires-Dist: capstone
|
36
|
+
Requires-Dist: jsons
|
37
|
+
Requires-Dist: lief
|
12
38
|
Requires-Dist: pyhidra==1.3.0
|
13
|
-
Requires-Dist:
|
14
|
-
Requires-Dist:
|
15
|
-
Requires-Dist: lief==0.14.1
|
16
|
-
Requires-Dist: pypcode==3.0
|
17
|
-
Requires-Dist: unicorn==2.0.1.post1
|
39
|
+
Requires-Dist: pypcode
|
40
|
+
Requires-Dist: unicorn
|
18
41
|
Provides-Extra: development
|
19
42
|
Requires-Dist: black; extra == "development"
|
20
43
|
Requires-Dist: isort; extra == "development"
|
@@ -24,16 +47,10 @@ Requires-Dist: pip-tools; extra == "development"
|
|
24
47
|
Requires-Dist: pre-commit; extra == "development"
|
25
48
|
Requires-Dist: sphinx; extra == "development"
|
26
49
|
Requires-Dist: sphinxcontrib-programoutput; extra == "development"
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
Dynamic:
|
31
|
-
Dynamic: home-page
|
32
|
-
Dynamic: license
|
33
|
-
Dynamic: provides-extra
|
34
|
-
Dynamic: requires-dist
|
35
|
-
Dynamic: requires-python
|
36
|
-
Dynamic: summary
|
50
|
+
Requires-Dist: jupyterlab; extra == "development"
|
51
|
+
Requires-Dist: notebook; extra == "development"
|
52
|
+
Requires-Dist: timeout-decorator; extra == "development"
|
53
|
+
Dynamic: license-file
|
37
54
|
|
38
55
|
# SmallWorld
|
39
56
|
|
@@ -56,19 +73,19 @@ There are two fundamental tenets behind SmallWorld
|
|
56
73
|
|
57
74
|
The first of these tenets we hope to support with good software APIs. As a very
|
58
75
|
simple example, consider the harnessing script
|
59
|
-
[
|
76
|
+
[square.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.py),
|
60
77
|
composed using SmallWorld, in which registers are initialized and a stack is
|
61
78
|
arranged for running the code in
|
62
|
-
[
|
79
|
+
[square.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.s).
|
63
80
|
For a more sophisticated example of SmallWorld's harnessing facitilites,
|
64
81
|
consider the code snippet
|
65
|
-
[struct.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.s),
|
82
|
+
[struct.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.s),
|
66
83
|
which assumes a stack and input pointers to a linked list with very specific
|
67
84
|
format. The harnessing script in this case is more complicated, including
|
68
85
|
specifying type information for the linked list element structures as well as
|
69
86
|
use of a simple allocator abstraction provided by SmallWorld to instantiate
|
70
87
|
nodes and link them together appropriately:
|
71
|
-
[struct.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.py).
|
88
|
+
[struct.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.py).
|
72
89
|
|
73
90
|
The second tenet we address with purpose-built analyses which leverage a
|
74
91
|
(possibly incomplete) harness script and that use techniques such as [Micro
|
@@ -84,33 +101,40 @@ SmallWorld directly supports yet.
|
|
84
101
|
|
85
102
|
## Installation
|
86
103
|
|
87
|
-
|
88
|
-
|
104
|
+
SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
|
89
105
|
```bash
|
90
|
-
pip install
|
106
|
+
pip install smallworld-re
|
91
107
|
```
|
92
108
|
|
93
|
-
|
94
|
-
|
95
|
-
Print basic usage and help:
|
109
|
+
If you'd like to install the latest changes or do development, you can install directly. To install SmallWorld from this repo, [optionally set up a venv](https://docs.python.org/3/library/venv.html) and then run:
|
96
110
|
|
97
111
|
```bash
|
98
|
-
|
112
|
+
pip install .
|
99
113
|
```
|
100
114
|
|
115
|
+
The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
|
116
|
+
|
101
117
|
## Contributing
|
102
118
|
|
103
119
|
Pull requests and issues more than welcome.
|
104
120
|
|
105
121
|
### Development
|
106
122
|
|
107
|
-
|
123
|
+
#### The Easy Way
|
124
|
+
To set up a development environment from this repo, the easiest method is to use
|
125
|
+
the install script `install.sh`. This has been tested on Ubuntu 22.04 and may be run
|
126
|
+
as the root user, or a non-root user with sudo permissions.
|
127
|
+
This will both install SmallWorld and build the unit and integration tests.
|
128
|
+
Note that installation will not work fully on an ARM and is not supported.
|
129
|
+
|
130
|
+
#### The Hard Way
|
131
|
+
To manually set up a development environment from this repo, install SmallWorld in
|
108
132
|
editable mode with extras for development and testing. Use the include
|
109
133
|
constraints to install frozen versions and ensure a consistent development
|
110
134
|
environment.
|
111
135
|
|
112
136
|
```bash
|
113
|
-
pip install -e .[development] -c constraints.txt
|
137
|
+
pip install -e ".[development]" -c constraints.txt
|
114
138
|
```
|
115
139
|
|
116
140
|
#### Code Style
|
@@ -123,17 +147,6 @@ installing development dependencies), run:
|
|
123
147
|
pre-commit install
|
124
148
|
```
|
125
149
|
|
126
|
-
### Documentation
|
127
|
-
|
128
|
-
To build the full SmallWorld documentation, after installing SmallWorld with
|
129
|
-
`development` extras enabled, from the `docs/` directory, run:
|
130
|
-
|
131
|
-
```bash
|
132
|
-
make html
|
133
|
-
```
|
134
|
-
|
135
|
-
Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
|
136
|
-
|
137
150
|
### Testing
|
138
151
|
|
139
152
|
#### Prerequisites
|
@@ -149,6 +162,9 @@ You can then build the tests by running:
|
|
149
162
|
|
150
163
|
```bash
|
151
164
|
make -C tests
|
165
|
+
|
166
|
+
ulimit -c unlimited
|
167
|
+
make -C tests/elf_core
|
152
168
|
```
|
153
169
|
|
154
170
|
#### Running Tests
|
@@ -161,6 +177,23 @@ python3 tests/unit.py
|
|
161
177
|
python3 tests/integration.py
|
162
178
|
```
|
163
179
|
|
180
|
+
### Documentation
|
181
|
+
|
182
|
+
To build the full SmallWorld documentation
|
183
|
+
* verify [Sphinx](https://www.sphinx-doc.org/) has been installed
|
184
|
+
* install SmallWorld with `development` extras enabled
|
185
|
+
* make sure you have built the tests since the documentation generation requires output from those tests
|
186
|
+
* from the `docs/` directory, run:
|
187
|
+
|
188
|
+
```bash
|
189
|
+
make html
|
190
|
+
```
|
191
|
+
|
192
|
+
The resulting documentation will be in `docs/build/html/`
|
193
|
+
|
194
|
+
Other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html) can also be generated.
|
195
|
+
|
196
|
+
|
164
197
|
## Distribution
|
165
198
|
|
166
199
|
DISTRIBUTION STATEMENT A. Approved for public release. Distribution is
|
@@ -1,40 +1,3 @@
|
|
1
|
-
Metadata-Version: 2.2
|
2
|
-
Name: smallworld-re
|
3
|
-
Version: 1.0.2
|
4
|
-
Summary: An emulation stack tracking library
|
5
|
-
Home-page: https://github.com/smallworld-re/smallworld
|
6
|
-
Author: MIT Lincoln Laboratory
|
7
|
-
Author-email: smallworld@ll.mit.edu
|
8
|
-
License: MIT
|
9
|
-
Requires-Python: >=3.10
|
10
|
-
Description-Content-Type: text/markdown
|
11
|
-
License-File: LICENSE.txt
|
12
|
-
Requires-Dist: pyhidra==1.3.0
|
13
|
-
Requires-Dist: angr==9.2.137
|
14
|
-
Requires-Dist: capstone==5.0.3
|
15
|
-
Requires-Dist: lief==0.14.1
|
16
|
-
Requires-Dist: pypcode==3.0
|
17
|
-
Requires-Dist: unicorn==2.0.1.post1
|
18
|
-
Provides-Extra: development
|
19
|
-
Requires-Dist: black; extra == "development"
|
20
|
-
Requires-Dist: isort; extra == "development"
|
21
|
-
Requires-Dist: flake8; extra == "development"
|
22
|
-
Requires-Dist: mypy; extra == "development"
|
23
|
-
Requires-Dist: pip-tools; extra == "development"
|
24
|
-
Requires-Dist: pre-commit; extra == "development"
|
25
|
-
Requires-Dist: sphinx; extra == "development"
|
26
|
-
Requires-Dist: sphinxcontrib-programoutput; extra == "development"
|
27
|
-
Dynamic: author
|
28
|
-
Dynamic: author-email
|
29
|
-
Dynamic: description
|
30
|
-
Dynamic: description-content-type
|
31
|
-
Dynamic: home-page
|
32
|
-
Dynamic: license
|
33
|
-
Dynamic: provides-extra
|
34
|
-
Dynamic: requires-dist
|
35
|
-
Dynamic: requires-python
|
36
|
-
Dynamic: summary
|
37
|
-
|
38
1
|
# SmallWorld
|
39
2
|
|
40
3
|
[![commit-style-image]][conventional]
|
@@ -56,19 +19,19 @@ There are two fundamental tenets behind SmallWorld
|
|
56
19
|
|
57
20
|
The first of these tenets we hope to support with good software APIs. As a very
|
58
21
|
simple example, consider the harnessing script
|
59
|
-
[
|
22
|
+
[square.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.py),
|
60
23
|
composed using SmallWorld, in which registers are initialized and a stack is
|
61
24
|
arranged for running the code in
|
62
|
-
[
|
25
|
+
[square.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.s).
|
63
26
|
For a more sophisticated example of SmallWorld's harnessing facitilites,
|
64
27
|
consider the code snippet
|
65
|
-
[struct.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.s),
|
28
|
+
[struct.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.s),
|
66
29
|
which assumes a stack and input pointers to a linked list with very specific
|
67
30
|
format. The harnessing script in this case is more complicated, including
|
68
31
|
specifying type information for the linked list element structures as well as
|
69
32
|
use of a simple allocator abstraction provided by SmallWorld to instantiate
|
70
33
|
nodes and link them together appropriately:
|
71
|
-
[struct.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.py).
|
34
|
+
[struct.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.py).
|
72
35
|
|
73
36
|
The second tenet we address with purpose-built analyses which leverage a
|
74
37
|
(possibly incomplete) harness script and that use techniques such as [Micro
|
@@ -84,33 +47,40 @@ SmallWorld directly supports yet.
|
|
84
47
|
|
85
48
|
## Installation
|
86
49
|
|
87
|
-
|
88
|
-
|
50
|
+
SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
|
89
51
|
```bash
|
90
|
-
pip install
|
52
|
+
pip install smallworld-re
|
91
53
|
```
|
92
54
|
|
93
|
-
|
94
|
-
|
95
|
-
Print basic usage and help:
|
55
|
+
If you'd like to install the latest changes or do development, you can install directly. To install SmallWorld from this repo, [optionally set up a venv](https://docs.python.org/3/library/venv.html) and then run:
|
96
56
|
|
97
57
|
```bash
|
98
|
-
|
58
|
+
pip install .
|
99
59
|
```
|
100
60
|
|
61
|
+
The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
|
62
|
+
|
101
63
|
## Contributing
|
102
64
|
|
103
65
|
Pull requests and issues more than welcome.
|
104
66
|
|
105
67
|
### Development
|
106
68
|
|
107
|
-
|
69
|
+
#### The Easy Way
|
70
|
+
To set up a development environment from this repo, the easiest method is to use
|
71
|
+
the install script `install.sh`. This has been tested on Ubuntu 22.04 and may be run
|
72
|
+
as the root user, or a non-root user with sudo permissions.
|
73
|
+
This will both install SmallWorld and build the unit and integration tests.
|
74
|
+
Note that installation will not work fully on an ARM and is not supported.
|
75
|
+
|
76
|
+
#### The Hard Way
|
77
|
+
To manually set up a development environment from this repo, install SmallWorld in
|
108
78
|
editable mode with extras for development and testing. Use the include
|
109
79
|
constraints to install frozen versions and ensure a consistent development
|
110
80
|
environment.
|
111
81
|
|
112
82
|
```bash
|
113
|
-
pip install -e .[development] -c constraints.txt
|
83
|
+
pip install -e ".[development]" -c constraints.txt
|
114
84
|
```
|
115
85
|
|
116
86
|
#### Code Style
|
@@ -123,17 +93,6 @@ installing development dependencies), run:
|
|
123
93
|
pre-commit install
|
124
94
|
```
|
125
95
|
|
126
|
-
### Documentation
|
127
|
-
|
128
|
-
To build the full SmallWorld documentation, after installing SmallWorld with
|
129
|
-
`development` extras enabled, from the `docs/` directory, run:
|
130
|
-
|
131
|
-
```bash
|
132
|
-
make html
|
133
|
-
```
|
134
|
-
|
135
|
-
Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
|
136
|
-
|
137
96
|
### Testing
|
138
97
|
|
139
98
|
#### Prerequisites
|
@@ -149,6 +108,9 @@ You can then build the tests by running:
|
|
149
108
|
|
150
109
|
```bash
|
151
110
|
make -C tests
|
111
|
+
|
112
|
+
ulimit -c unlimited
|
113
|
+
make -C tests/elf_core
|
152
114
|
```
|
153
115
|
|
154
116
|
#### Running Tests
|
@@ -161,6 +123,23 @@ python3 tests/unit.py
|
|
161
123
|
python3 tests/integration.py
|
162
124
|
```
|
163
125
|
|
126
|
+
### Documentation
|
127
|
+
|
128
|
+
To build the full SmallWorld documentation
|
129
|
+
* verify [Sphinx](https://www.sphinx-doc.org/) has been installed
|
130
|
+
* install SmallWorld with `development` extras enabled
|
131
|
+
* make sure you have built the tests since the documentation generation requires output from those tests
|
132
|
+
* from the `docs/` directory, run:
|
133
|
+
|
134
|
+
```bash
|
135
|
+
make html
|
136
|
+
```
|
137
|
+
|
138
|
+
The resulting documentation will be in `docs/build/html/`
|
139
|
+
|
140
|
+
Other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html) can also be generated.
|
141
|
+
|
142
|
+
|
164
143
|
## Distribution
|
165
144
|
|
166
145
|
DISTRIBUTION STATEMENT A. Approved for public release. Distribution is
|
@@ -0,0 +1,56 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
3
|
+
build-backend = "setuptools.build_meta"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "smallworld-re"
|
7
|
+
version = "2.0.0"
|
8
|
+
description = "An emulation stack tracking library"
|
9
|
+
readme = { file = "README.md", content-type = "text/markdown" }
|
10
|
+
requires-python = ">=3.10"
|
11
|
+
license = { file = "LICENSE.txt" }
|
12
|
+
authors = [
|
13
|
+
{ name = "MIT Lincoln Laboratory" },
|
14
|
+
{ email = "smallworld@ll.mit.edu" },
|
15
|
+
]
|
16
|
+
|
17
|
+
dependencies = [
|
18
|
+
"angr",
|
19
|
+
"capstone",
|
20
|
+
"jsons",
|
21
|
+
"lief",
|
22
|
+
"pyhidra==1.3.0", # pip-compile does not pin pyhidra in constraints.txt for some reason
|
23
|
+
"pypcode",
|
24
|
+
"unicorn",
|
25
|
+
]
|
26
|
+
|
27
|
+
[project.urls]
|
28
|
+
Homepage = "https://github.com/smallworld-re/smallworld"
|
29
|
+
Issues = "https://github.com/smallworld-re/smallworld/issues"
|
30
|
+
|
31
|
+
[project.optional-dependencies]
|
32
|
+
development = [
|
33
|
+
"black",
|
34
|
+
"isort",
|
35
|
+
"flake8",
|
36
|
+
"mypy",
|
37
|
+
"pip-tools",
|
38
|
+
"pre-commit",
|
39
|
+
"sphinx",
|
40
|
+
"sphinxcontrib-programoutput",
|
41
|
+
"jupyterlab",
|
42
|
+
"notebook",
|
43
|
+
"timeout-decorator",
|
44
|
+
]
|
45
|
+
|
46
|
+
[project.scripts]
|
47
|
+
smallworld = "smallworld.__main__:main"
|
48
|
+
|
49
|
+
[tool.setuptools]
|
50
|
+
include-package-data = true
|
51
|
+
zip-safe = false
|
52
|
+
license-files = ["LICENSE.txt"]
|
53
|
+
|
54
|
+
[tool.setuptools.packages.find]
|
55
|
+
include = ["smallworld*"]
|
56
|
+
|
@@ -1,14 +1,22 @@
|
|
1
1
|
from .analysis import * # noqa: F401, F403
|
2
2
|
from .analysis import __all__ as __analysis__
|
3
3
|
from .colorizer import Colorizer
|
4
|
+
from .colorizer_def_use import ColorizerDefUse
|
4
5
|
from .colorizer_summary import ColorizerSummary
|
5
6
|
from .field_detection import FieldDetectionAnalysis, ForcedFieldDetectionAnalysis
|
6
7
|
from .forced_exec import ForcedExecution
|
8
|
+
from .trace_execution import TraceExecution
|
9
|
+
from .trace_execution_types import CmpInfo, TraceElement, TraceRes
|
7
10
|
|
8
11
|
__all__ = __analysis__ + [
|
9
12
|
"Colorizer",
|
10
13
|
"ColorizerSummary",
|
14
|
+
"ColorizerDefUse",
|
11
15
|
"FieldDetectionAnalysis",
|
12
16
|
"ForcedFieldDetectionAnalysis",
|
13
17
|
"ForcedExecution",
|
18
|
+
"TraceExecution",
|
19
|
+
"TraceElement",
|
20
|
+
"TraceRes",
|
21
|
+
"CmpInfo",
|
14
22
|
]
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import abc
|
2
|
+
|
3
|
+
from smallworld.hinting.hinting import Hinter
|
4
|
+
|
5
|
+
from .. import state, utils
|
6
|
+
|
7
|
+
|
8
|
+
class Analysis(utils.MetadataMixin):
|
9
|
+
"""An analysis that emits some information about some code, possibly to help with harnessing."""
|
10
|
+
|
11
|
+
def __init__(self, hinter: Hinter, *args, **kwargs) -> None:
|
12
|
+
super().__init__(*args, **kwargs)
|
13
|
+
self.hinter = hinter
|
14
|
+
|
15
|
+
@abc.abstractmethod
|
16
|
+
def run(self, machine: state.Machine) -> None:
|
17
|
+
"""Run the analysis.
|
18
|
+
|
19
|
+
This function **should not** modify the provided Machine. Instead, it
|
20
|
+
should be coppied before modification.
|
21
|
+
|
22
|
+
Arguments:
|
23
|
+
machine: A machine state object on which this analysis should run.
|
24
|
+
"""
|
25
|
+
|
26
|
+
pass
|
27
|
+
|
28
|
+
|
29
|
+
__all__ = ["Analysis"]
|
@@ -5,7 +5,6 @@ from .. import emulators, hinting
|
|
5
5
|
from . import analysis
|
6
6
|
|
7
7
|
logger = logging.getLogger(__name__)
|
8
|
-
hinter = hinting.get_hinter(__name__)
|
9
8
|
|
10
9
|
|
11
10
|
class CodeCoverage(analysis.Analysis):
|
@@ -28,4 +27,4 @@ class CodeCoverage(analysis.Analysis):
|
|
28
27
|
coverage[pc] = 1
|
29
28
|
|
30
29
|
hint = hinting.CoverageHint(message="Coverage for execution", coverage=coverage)
|
31
|
-
hinter.
|
30
|
+
self.hinter.send(hint)
|