SmallWorld
Easier harnessing of code for analysis!
Quick Start
Our documentation is currently being updated. To get up and running quickly try the following:
On Linux install nix with flakes enabled. We recommend the Determinate Systems nix installer.
Download the script found in examples/nix-harness.py.
Then run:
nix run nixpkgs#cachix -- use smallworld
chmod +x nix-harness.py
./nix-harness.py 10
See the comments in the python script for more details.
Description
SmallWorld is an environment for streamlined harnessing of binary code for the purpose of dynamic analysis. If you have code that you got from somewhere and you'd like to run it and analyze those runs to understand what that code does or if it has bugs, then you should try SmallWorld!!
There are two fundamental tenets behind SmallWorld
- Harnessing should be easier
- Analysis can accelerate harnessing
The first of these tenets we hope to support with good software APIs. As a very simple example, consider the harnessing script square.amd64.py, composed using SmallWorld, in which registers are initialized and a stack is arranged for running the code in square.amd64.s. For a more sophisticated example of SmallWorld's harnessing facitilites, consider the code snippet struct.amd64.s, which assumes a stack and input pointers to a linked list with very specific format. The harnessing script in this case is more complicated, including specifying type information for the linked list element structures as well as use of a simple allocator abstraction provided by SmallWorld to instantiate nodes and link them together appropriately: struct.amd64.py.
The second tenet we address with purpose-built analyses which leverage a (possibly incomplete) harness script and that use techniques such as Micro Execution and Symbolic Execution to provide hints that can guide improving a harness.
This harness is the final output of SmallWorld and might be used in fuzzing or dynamic reverse engineering. Note that these are not applications which SmallWorld directly supports yet.
Distribution
DISTRIBUTION STATEMENT A. Approved for public release. Distribution is unlimited.
This material is based upon work supported by the Under Secretary of Defense for Research and Engineering under Air Force Contract No. FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Under Secretary of Defense for Research and Engineering.
Delivered to the U.S. Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of this work other than as specifically authorized by the U.S. Government may violate any copyrights that exist in this work.
Metadata
Release files for smallworld-re 3.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| smallworld_re-3.0.1.tar.gz | 426.4 kB | Without provenance | Details for smallworld_re-3.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| smallworld_re-3.0.1-py3-none-any.whl | Python 3 | none | any | Details for smallworld_re-3.0.1-py3-none-any.whl |
Total release size: 1.0 MB
Release files / smallworld_re-3.0.1.tar.gz
| Download URL | smallworld_re-3.0.1.tar.gz |
|---|---|
| Size | 426.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1672c897722ea81787f3f0a04849fa483dbb0905d7606efa0b2c47309868275
|
|
BLAKE2b-256 checksum How to use checksums |
6d7d401fd4ec43b9c8f8dc8b995b159781baa7cc2ca7c411cbdcb76c98ec3341
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / smallworld_re-3.0.1-py3-none-any.whl
| Download URL | smallworld_re-3.0.1-py3-none-any.whl |
|---|---|
| Size | 578.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f2760c2fd28e45e8041b5b5b80d537281dd6537f1f44b753ae38c0b58fcf750
|
|
BLAKE2b-256 checksum How to use checksums |
626d9d7183955a294846460763c33ad5beeb65cee446642954e79b2ad6ed8119
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for smallworld-re 3.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.