LLVM pass wrapper library for creating robust shellcode
Project description
squishy 🐻❄️
A collection of new (LLVM 15) passes to compile normal-looking code to a callable, jump-to-able blob. Also includes a python library that provides a python interface to produce a blob for any architecture triple.
Inspired by SheLLVM, but should address some of the outdated issues with that project. Thanks to SheLLVM for the inspiration :)
Installing
Dependencies
- LLVM-15: Install with
wget -qO - https://apt.llvm.org/llvm.sh | sudo bash -s 15
- Meson 0.63+: Install with
pip install -U meson
and add~/.local
to your path
To set up LLVM-15 as alternatives you can run scripts/set-alternatives.sh
The easiest way to install squishy 🐻❄️
is from PyPi (sorry about the name, PyPi has weird rules). If an sdist is installed, meson
must be installed and
llvm-15
must be available.
python3 -m pip install pysquishy>=0.1.16
Building
squishy 🐻❄️
uses the meson modern build system. To
build, first ensure that meson
and ninja
are installed, and that you have
an installation of llvm-15
which you can get here.
Then, invoke:
meson build
cd build
meson compile
to produce the library.
Passes
- Aggressive Inliner: Recursively applies alwaysinline and inlines function calls and global variables into the main function.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pysquishy-0.1.21.tar.gz
.
File metadata
- Download URL: pysquishy-0.1.21.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.11.0rc2 Linux/6.1.0-0.rc2.21.fc38.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30e2a148ef67df61a86780186676cd3898ab0eb3bf6079c905c57a579e9affaf |
|
MD5 | 4e4cdbc6e58a77e33b9a0c061e589866 |
|
BLAKE2b-256 | 81f490b91a5aae58aef7e508be9109e3dc3ecd4a0861227d07adac2f37f96982 |