Skip to main content

An emulation stack tracking library

Project description

SmallWorld

commit-style-image code-style-image license-image

Easier harnessing of code for analysis!

SmallWorld Logo

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.

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smallworld_re-3.0.0.tar.gz (424.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smallworld_re-3.0.0-py3-none-any.whl (576.8 kB view details)

Uploaded Python 3

File details

Details for the file smallworld_re-3.0.0.tar.gz.

File metadata

  • Download URL: smallworld_re-3.0.0.tar.gz
  • Upload date:
  • Size: 424.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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}

File hashes

Hashes for smallworld_re-3.0.0.tar.gz
Algorithm Hash digest
SHA256 c467b9d66e5cad2e01f4a0ddea10bffea141ccf0caf6d0d66a0ba546f497a6cd
MD5 658c60a04ac9f81ea80c4e9d8ba1c5a7
BLAKE2b-256 2867c59b8ca0e6f511195bc21fec5ad8d6a6e6998511a78661004fe8bd17c0b9

See more details on using hashes here.

File details

Details for the file smallworld_re-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: smallworld_re-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 576.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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}

File hashes

Hashes for smallworld_re-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9aeb7c6f3c8b8ae6cecd469e2474eee264e6441dd1d537560c508e9da29daa91
MD5 0a5c37893167be384cb8595499c68b02
BLAKE2b-256 2978ba68a68fdf30fc7394c1aade89c38d6e6f85a5b00d7b808ed2e80bb7d3f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page