Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
TinyLoad — Packeur et crypter open source pour Windows x64 PE. Compresse et chiffre les exécutables avec une machine virtuelle personnalisée dans un stub auto-extractible. | Kitploit
Outils/GitHubGitHub/iamsopotatoe-coder/tinyload
Outils de Chiffrement/DéchiffrementGénération de PayloadsExploitationÉvasion IDS/IPSRétro-ingénierieShellcodeAnalyse de BinairesGénération de Shellcode
GitHubiamsopotatoe-coder/tinyload

TinyLoad

Packeur et crypter open source pour Windows x64 PE. Compresse et chiffre les exécutables avec une machine virtuelle personnalisée dans un stub auto-extractible.

18016173il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
Site web
<p align="center"> <img src="https://assets.kitploit.com/production/public/readmes/785/7ff1b51788aec918215f14448f75634857f9c725958c5fb66694ab16f5e8542d.png" alt="github-social-preview" width="600" /> </p>

## *TinyLoad v7.4 - packer et crypter PE pour windows*
<p align="left">
  <a href="https://github.com/iamsopotatoe-coder/TinyLoad/actions/workflows/build.yml"><img src="https://img.shields.io/github/actions/workflow/status/iamsopotatoe-coder/TinyLoad/build.yml?style=flat&amp;logo=github&amp;logoColor=white&amp;label=build&amp;labelColor=0d0d0d" alt="build"></a>
  <a href="https://github.com/gmh5225/awesome-game-security"><img src="https://awesome.re/mentioned-badge.svg" alt="Mentioned in Awesome" height="20"></a>
</p>

TinyLoad est un crypter/packer PE pour exécutables x64. Il empaquette un exe d'entrée avec différentes couches de protection pour empêcher son reverse engineering. C'est un seul fichier .cpp sans aucune dépendance externe.

## *comment ça marche*

TinyLoad ajoute votre payload à une copie de lui-même. Lorsque l'exe empaqueté s'exécute, il extrait la payload, la déchiffre et l'exécute directement en mémoire sans jamais écrire l'original sur le disque. À chaque empaquetage, les opcodes VM sont modifiés aléatoirement et répartis dans 4 sous-tables à clés indépendantes, de sorte qu'aucune compilation n'est identique.
<details>
<summary><b>Pipeline pack()</b></summary>
  
```mermaid
flowchart TD
    start["pack(in, out, vm, comp, veh, noconsole)"] --> load["loadFile(in) → orig"]
    load --> pe{"MZ + PE00 + Machine 0x8664 + NumberOfSections in 1..96?"}
    pe -->|fail| err["printf error / return false"]
    pe -->|ok| init["pay = orig    flags = 0"]
    
    init --> cdec{"--c ?"}
    cdec -->|yes| lz["flags |= 1<br/>lzPack: WINDOW=0xFFFF  MAXCHAIN=4096<br/>MAXMATCH=258  MINMATCH=3  HSIZE=65536<br/>hash4 = FNV-ish fold * 0x1000193<br/>lazy lookahead la = 1,2<br/>out = uint32le origSz + 8-token flag bytes<br/>match → varint dist, varint len-3"]
    cdec -->|no| vmq
    lz --> vmq{"--vm ?"}

    vmq -->|yes| scatter["flags |= 2<br/>Fisher-Yates 32 slots, scatter NUM_OPS=28<br/>into subtables 4x8, unused stay 0xFF<br/>opmap_enc op = tbl shl 6 OR idx"]
    scatter --> canary["canary corridor n=8, skip first 0x400 of pay<br/>canExp c = pay at off XOR prev"]
    canary --> mkvm["makeVmProgram opmap_enc, key1, key2, canary<br/>key1,key2 ← mt19937_64 TickCount64 XOR QPC<br/>opaque predicates + stream loop + canary mask"]
    mkvm --> venc["vmEncryptPayload  192-bit state<br/>k3 = 0x9E3779B97F4A7C15<br/>ks = uint8((k1 XOR k2) + k3)<br/>b = NOT(b XOR ks)<br/>k1 = rotl64(k1,11) XOR k2<br/>k2 = rotr64(k2,19) + k1 + k3<br/>k3 = k3 * phi XOR k1"]
    vmq -->|no| vehq
    venc --> vehq{"--veh ?"}

    vehq -->|yes| vflag["flags |= FLAG_VEH 4"]
    vehq -->|no| stub
    vflag --> stub["stub = loadFile GetModuleFileNameA self<br/>saveFile out, stub as host image"]

    stub --> skey["stubKey = 0x9E3779B97F4A7C15<br/>for i in 0x1000 .. min n, 0x2000:<br/>stubKey = (stubKey XOR stub i) * phi"]
    skey --> disp["prime vmRun dispKey=0 → fill g_off<br/>dispKey ← rng<br/>encOff j = uint64(g_off j) XOR dispKey"]

    disp --> tail["Tail: sig TINYLD60, origSz, packSz, flags,<br/>dispOff x28, subtables 4x8, vmCodeSz,<br/>dispKey, canary*, chunk*,<br/>payHash = SHA-256 orig first 8B"]
    tail --> hide["sig i XOR= stubKey shr 8i<br/>xorOpmap FNV-1a 0x811C9DC5 / 0x01000193<br/>feeds origSz, packSz, vmCodeSz + first 32B<br/>of vmCode and pay, per-table<br/>flags |= FLAG_CHUNK 8"]
    hide --> tenc["XOR-encode Tail fields with stubKey slices<br/>vmCode vi XOR= stubKey shr ((vi*3) and 63)"]

    tenc --> ovl["payload = vmCode || pay<br/>interleave: insert 0x00 after every 3 bytes"]
    ovl --> chunks["split into 4 chunks, shuffle physical order<br/>Tail placeholder TAIL_SERIALIZED_SZ = 419<br/>before each chunk: 128..640 RNG junk"]
    chunks --> tea["xxteaEncrypt bytes after Tail<br/>DELTA=0x9E3779B9  rounds=6+52/n<br/>remainder XOR pxKey0 xor pxKey1 xor pxKey2 xor pxKey3<br/>patch k i XOR FEEDF00D / CAFEBABE /<br/>DEADBEEF / 8BADF00D into _pxBlock<br/>between C0DE1337 and B007DEAD"]
    tea --> ser["XOR chunkOff / chunkSz / chunkOrder / chunkCnt<br/>serializeTail: 16 TLV records id + u16le sz + bytes<br/>Fisher-Yates order, LCG 1103515245+12345<br/>seed = stubKey XOR filesize<br/>append DWORD LE: tailOff XOR stubKey low 32"]

    ser --> fin{"--noconsole ?"}
    fin -->|yes| gui["OptionalHeader.Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI"]
    fin -->|no| scr
    gui --> scr["scrambleSections: cycle names<br/>.text .data .rdata .bss .idata"]
    scr --> done["saveFile out, result"]
```
</details>

## *téléchargement*

récupérez un binaire précompilé depuis les [releases](https://github.com/iamsopotatoe-coder/tinyload/releases) ou compilez-le vous-même.

## *compilation depuis les sources*

vous avez besoin de MinGW (g++). exécutez simplement :

```cmd
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s
```

ou utilisez `build.bat`.

## *utilisation*

```cmd
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
```

| flag | ce qu'il fait |
|------|-------------|
| `--i <file>` | exe d'entrée à empaqueter |
| `--o <file>` | chemin de sortie (défaut : `input_packed.exe`) |
| `--vm` | chiffrement VM |
| `--c` | compression LZ77 |
| `--veh` | déchiffrement par défaut de page VEH |
| `--noconsole` | sous-système GUI |

vous avez besoin d'au moins 1 de `--vm`, `--c` ou `--veh`.

### exemples

<img width="800" height="103" alt="2026-08-1118-55-14-ezgif com-video-to-gif-converter" src="https://assets.kitploit.com/production/public/readmes/785/7ce7b0012acf9d4aa5710a0d65dbd20d0e5162a794e0590aad42c450a39dabdb.gif" />

## *images DIE*

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/785/9272d64113a13607fb2bac80ae094f39240d1294be380965a878d3a949814b96.png" alt="die-gui-packed" height="250" " />
  <img src="https://assets.kitploit.com/production/public/readmes/785/347ba4f6f37f73ace650716b77f93895119ff6509cb476e27b69fab81bba6de4.png" alt="die-gui-entropy" height="250" " />
</p>


## *compression*

compression LZ77 personnalisée avec correspondance par chaîne de hachage et une fenêtre glissante de 64 Ko. la compression s'exécute en premier, puis le chiffrement VM s'applique par-dessus afin que les motifs éventuels dans les données compressées soient également masqués.

## *chiffrement VM*

machine virtuelle personnalisée de 28 opcodes qui s'exécute à l'intérieur du stub. les opcodes sont placés aléatoirement dans 4 sous-tables de 8 chacun et chaque sous-table est chiffrée par XOR avec une clé différente dérivée des données de la payload. casser 1 sous-table révèle au plus 8 opcodes sur 28. le chiffrement lui-même est un chiffrement de flux 128 bits utilisant un mélange de clés rotl et rotr exécuté entièrement dans l'interpréteur VM. La payload est chiffrée avec XXTEA.


## *déchiffrement par défaut de page VEH*

avec `--veh` activé, toutes les pages de sections PE sont mappées en PAGE_NOACCESS. lorsque le programme tente d'accéder à une page, cela déclenche une exception ; un gestionnaire d'exceptions vectorisé déchiffre uniquement cette page et définit la protection correcte. un thread de surveillance s'exécute en arrière-plan et rechiffre toute page non touchée depuis 200 ms. à tout moment, la majeure partie de votre programme reste chiffrée en mémoire, de sorte que les dumps mémoire ne capturent que ce qui a été récemment accédé.


## *anti dump*

les 4 API les plus critiques (GetModuleHandleA, GetProcAddress, ExitProcess, VirtualAlloc) sont redirigées via des fonctions wrapper à l'intérieur du stub. après le chargement de la payload, l'intégralité du répertoire d'imports est mise à zéro afin que les dumps mémoire ne puissent pas reconstruire la table d'imports.

## *licence*

MIT

## *notes complémentaires*

- Il y a beaucoup de fonctionnalités que je n'ai pas mises dans le readme, vous pouvez lire le code vous-même ou consulter [changelog.md](https://github.com/iamsopotatoe-coder/tinyload/blob/main/docs/CHANGELOG.md)
- cela fonctionne sur la plupart des fichiers que j'ai testés ; si ça casse sur le vôtre, ouvrez une issue et je m'en occuperai
- les suggestions et idées de fonctionnalités vont aussi dans les issues
- si vous l'utilisez, une étoile aide beaucoup <3 
- oui, les AV signalent les packers, c'est attendu. (Actuellement 9 détections sur virustotal ; tout fichier que vous empaquetez avec obtient 9 détections, le contenu n'a pas d'importance)
- merci de ne pas empaqueter de malwares avec cet outil, il est destiné à des fins légitimes
Télécharger l’outil