about summary refs log tree commit diff stats
path: root/miasm_test.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Refactor comparison and user-facing logicTheofilos Augoustis2024-01-241-37/+0
| | | | | Co-authored-by: Theofilos Augoustis <theofilos.augoustis@gmail.com> Co-authored-by: Nicola Crivellin <nicola.crivellin98@gmail.com>
* Refactor project structureTheofilos Augoustis2023-12-311-2/+2
| | | | | | | | Read concrete state on demand during concolic exec During concolic tracing, don't record full program snapshots at each basic block, but instead read concrete values directly from the concrete target when they are needed.
* Replace symbolic execution tools with MiasmTheofilos Augoustis2023-12-071-235/+22
| | | | | | | | | Refactor SymbolicTransform interface a bit to include transformations of memory content. Implement it for Miasm as a backend. Move all symbolic execution things out of the test script (`miasm_test.py`) and move them to `symbolic.py` to replace the angr-based algorithms.
* Record symbolic transform for single instructionsTheofilos Augoustis2023-11-281-74/+132
| | | | | | | | | Step manually through single instructions instead of full basic blocks. Record the transformation performed by each instruction as symbolic equations. Co-authored-by: Theofilos Augoustis <theofilos.augoustis@gmail.com> Co-authored-by: Nicola Crivellin <nicola.crivellin98@gmail.com>
* Add memory storage capabilities to `ProgramState`Theofilos Augoustis2023-11-271-100/+72
| | | | | | | | | | The `SparseMemory` class represents a program's memory. While the user can read from and write to arbitrary memory addresses, it manages its memory in pages/chunks internally. This is a tradeoff between space consumption (this solution might have a memory overhead) and lookup speed of individual memory addresses. Add two small unit tests for `SparseMemory`.
* Standardize X86 register namesTheofilos Augoustis2023-11-261-35/+16
| | | | | | | | | | | | | | | | | | | | | | | Add some infrastructure for flexible register name matching (i.e. using 'PC' to look up RIP): - `Arch.to_regname` tries to look up a register's standard name from an arbitrary string. - `ArchX86` overrides `to_regname` to resolve alias names for registers. Currently just 'PC' for 'RIP'. - `ProgramState.read` and `ProgramState.write` use `to_regname` to make register access more convenient. Add all flags with their standard abbreviations to `x86.regnames`. Implement a full RFLAGS decomposition into its individual flags in `x86`. Replace the hacks in `run.py` and `miasm_test.py` with this more complete solution. Co-authored-by: Theofilos Augoustis <theofilos.augoustis@gmail.com> Co-authored-by: Nicola Crivellin <nicola.crivellin98@gmail.com>
* Migrate to Miasm for concolic execution from AngrTheofilos Augoustis2023-11-251-0/+239
Co-authored-by: Theofilos Augoustis <theofilos.augoustis@gmail.com> Co-authored-by: Nicola Crivellin <nicola.crivellin98@gmail.com>