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
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
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
Built Distribution
Hashes for pysquishy-0.1.3-cp310-cp310-manylinux_2_33_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32efbc53e7520cb47c125c332090dab09bc849a1348144be3333b13752366442 |
|
MD5 | 46e7a302409684a7f9a6500aafb551d6 |
|
BLAKE2b-256 | d023b10441fc55e5cf28069693b27895b4a0d07134bc8839b3e1ae250174d4e1 |