Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
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.

Voir le dépôt
1801645il y a 9 joursVé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
Site web

github-social-preview

TinyLoad v7.4 - packer et crypter PE pour windows

build Mentioned in Awesome

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.

Pipeline pack()
root@kitploit:~
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"]

téléchargement

récupérez un binaire précompilé depuis les releases ou compilez-le vous-même.

compilation depuis les sources

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

root@kitploit:~
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s

ou utilisez build.bat.

utilisation

root@kitploit:~
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]

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

exemples

2026-08-1118-55-14-ezgif com-video-to-gif-converter

images DIE

die-gui-packed die-gui-entropy

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
  • 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
flagce qu'il fait
--i <file>exe d'entrée à empaqueter
--o <file>chemin de sortie (défaut : input_packed.exe)
--vmchiffrement VM
--ccompression LZ77
--vehdéchiffrement par défaut de page VEH
--noconsolesous-système GUI