themida-unmutate
A Python 3 tool to statically deobfuscate functions protected by Themida,
WinLicense and Code Virtualizer 3.x's mutation-based obfuscation.
The tool has been tested on Themida up to version 3.1.9. It's expected to
work on WinLicense and Code Virtualizer as well.
A Binary Ninja plugin is also available here.
Features
- Automatically resolve trampolines' destination addresses
- Statically deobfuscate mutated functions
- Rebuild fully working binaries
Known Limitations
- Doesn't support ARM64 binaries
How to Download
You can install the project with pip:
pip install themida-unmutate
A standalone PyInstaller build is available for Windows in "Releases".
How to Use
Here's what the CLI looks like:
$ themida-unmutate --help
usage: themida-unmutate [-h] -a ADDRESSES [ADDRESSES ...] -o OUTPUT [--no-trampoline] [--reassemble-in-place] [-v] protected_binary
Automatic deobfuscation tool for Themida's mutation-based protection
positional arguments:
protected_binary Protected binary path
options:
-h, --help show this help message and exit
-a ADDRESSES [ADDRESSES ...], --addresses ADDRESSES [ADDRESSES ...]
Addresses of the functions to deobfuscate
-o OUTPUT, --output OUTPUT
Output binary path
--no-trampoline Disable function unwrapping
--reassemble-in-place
Rewrite simplified code over the mutated code rather than in a new code section
-v, --verbose Enable verbose logging
Metadata
Release files for themida-unmutate 0.2.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 |
|---|---|---|---|---|
| themida_unmutate-0.2.1.tar.gz | 26.8 kB | Without provenance | Details for themida_unmutate-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| themida_unmutate-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for themida_unmutate-0.2.1-py3-none-any.whl |
Total release size: 56.5 kB
Release files / themida_unmutate-0.2.1.tar.gz
| Download URL | themida_unmutate-0.2.1.tar.gz |
|---|---|
| Size | 26.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92736112936bd6f528894dfcf55747a0944a581178f13809f39555cece4b27b5
|
|
BLAKE2b-256 checksum How to use checksums |
f0e3f90feb31467d2d4a87ee93a05afec390ef11c7e9ffbc4ed4f49ac0e89e60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.4
|
Release files / themida_unmutate-0.2.1-py3-none-any.whl
| Download URL | themida_unmutate-0.2.1-py3-none-any.whl |
|---|---|
| Size | 29.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c1726bb0c49ffc9b3ee596f09862eb2d506ae00e3649ef0368697fd6da4660f
|
|
BLAKE2b-256 checksum How to use checksums |
f690ad5f03a74f960f8c14cb8170adc5f90b55dd11c16dcd38d9b01e33788456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.4
|
Security for themida-unmutate 0.2.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.