Skip to content

Commit 58c6fa6

Browse files
authored
chore: update README (#137)
1 parent 5ed9f7c commit 58c6fa6

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

README.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,25 @@
77
</div>
88

99
# `jingle`: SMT Modeling for `p-code`
10-
`jingle` is a library that models (a fragment of) Ghidra's `p-code` in the language of SMT. It represents states of
11-
the `p-code` Virtual Machine as expressions on the `QF_ABV` logic, and represents `p-code` operations as relations
12-
between these states.
10+
`jingle` provides SMT modeling Ghidra's `p-code`. It represents states of
11+
the `p-code` Virtual Machine as expressions on the `QF_ABV` logic, and represents `p-code` operations as relations between these states. It additionally implements the Configurable
12+
Program Analysis algorithm over pcode allowing for quickly implementing flexible custom analyses.
1313

14-
**ALPHA SOFTWARE: this software is fresh, largely untested, and subject to change. It is not yet using semantic versioning.**
14+
**ALPHA SOFTWARE: this software is suitable for research usage but is not yet ready to be used in production.**
1515

16-
This repository contains a [Cargo Workspace](https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html) for two
16+
This repository contains a [Cargo Workspace](https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html) for three
1717
related crates:
1818

1919
* [`jingle_sleigh`](./jingle_sleigh): a Rust FFI in front of [Ghidra](https://github.com/NationalSecurityAgency/ghidra)'
2020
s
2121
code translator: `SLEIGH`. `SLEIGH` is written in C++ and can be
2222
found [here](https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Features/Decompiler/src/decompile/cpp).
2323
This crate contains a private internal low-level API to `SLEIGH` and exposes an idiomatic high-level API to consumers.
24-
* [`jingle`](./jingle): a set of functions built on top of `jingle_sleigh` that defines an encoding of `p-code` operations
25-
into SMT, using [z3.rs](https://github.com/prove-rs/z3.rs). `jingle` is currently
26-
designed for providing formulas for use in decision procedures over individual program traces. As such, it does not yet
27-
expose APIs for constructing or reasoning about control-flow graphs, though this is under development.
24+
* [`jingle`](./jingle): defines SMT modeling of p-code states and operations using [z3.rs](https://github.com/prove-rs/z3.rs) as well as a small program analysis framework. `jingle` implements [Configurable Program Analysis](https://doi.org/10.1007/978-3-319-10575-8_16), allowing for flexible custom program analysis, as well as pre-built analyses for building SMT models of unwound p-code programs.
2825
* [`jingle_python`](./jingle_python): a set of [pyo3](https://pyo3.rs) bindings for `jingle`. These bindings expose a
2926
simple interface to both SLEIGH and our logical modeling of `p-code` in SMT. SMT formulae are exposed wrapped in
3027
their "native" python z3 classes, allowing easy integration with other tools. These bindings are _especially_ raw and
31-
subject to change.
28+
subject to change and do not yet expose any of the program analysis APIs.
3229

3330
## Usage
3431

@@ -49,13 +46,13 @@ The only thing ghidra is used for here is as a standardized folder layout for `s
4946
You can install a simple CLI demonstrating jingle's modeling by running
5047

5148
```sh
52-
cargo install --features bin jingle
49+
cargo install --features bin jingle
5350
```
5451

5552
If you are using the [CLI](./jingle),
5653
then provide the path to ghidra as an argument in your first run.
5754

58-
The CLI produces disassembly, pcode, and SMT models for small hex-encoded instruction encodings.
55+
The CLI produces disassembly, pcode, and SMT models for small hex-encoded instruction encodings. Note that the CLI uses an older version of `jingle`'s modeling that does not support arbitrary control flow.
5956

6057

6158
## Development

0 commit comments

Comments
 (0)