
TinyLoad v7.3
Packer e crypter PE open source per Windows x64. Comprime e crittografa gli eseguibili tramite una macchina virtuale personalizzata, racchiudendoli in uno stub autoestraente.
TinyLoad v7.3 - PE packer per Windows
TinyLoad è un crypter/packer PE per eseguibili x64: impacchetta un exe in ingresso con diversi livelli di protezione per impedirne il reverse engineering. È un singolo file .cpp e non ha dipendenze esterne.
come funziona
TinyLoad aggiunge il tuo payload a una copia di se stesso. Quando l'exe impacchettato viene eseguito, estrae il payload, lo decripta e lo esegue direttamente in memoria senza mai scrivere l'originale su disco. Ogni volta che impacchetti qualcosa, gli opcode della VM vengono modificati casualmente e inseriti in 4 sottotabelle con chiavi indipendenti, così non esistono due build uguali.
download
Scarica un binario precompilato dalle release oppure compilalo da te.
compilazione dai sorgenti
Ti serve MinGW (g++). Basta eseguire:
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s
oppure usa build.bat.
uso
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
| flag | cosa fa |
|---|---|
--i <file> | exe di ingresso da impacchettare |
--o <file> | percorso di output (predefinito: input_packed.exe) |
--vm | crittografia VM |
--c | compressione LZ77 |
--veh | decriptazione page fault VEH |
--noconsole | sottosistema GUI |
Ti serve almeno uno tra --vm, --c o --veh.
esempi
immagini DIE
compressione
Compressione LZ77 personalizzata con hash chain matching e una finestra scorrevole da 64KB. La compressione viene eseguita per prima, poi subentra la crittografia VM, così anche eventuali pattern nei dati compressi vengono nascosti.
crittografia VM
Macchina virtuale personalizzata con 28 opcode che viene eseguita dentro lo stub. Gli opcode vengono posizionati casualmente in 4 sottotabelle da 8 ciascuna, e ogni sottotabella è crittata XOR con una chiave diversa derivata dai dati del payload. Violare 1 sottotabella rivela al massimo 8 opcode su 28. Il cifrario stesso è un cifrario a flusso a 128 bit che usa rotl e rotr per il key mixing, eseguito interamente dentro l'interprete della VM. Il payload viene crittato usando XXTEA.
decriptazione page fault VEH
Con --veh abilitato, tutte le pagine delle sezioni PE vengono mappate come PAGE_NOACCESS. Quando il programma tenta di accedere a una pagina, viene generata un'eccezione; un gestore di eccezioni vettorizzato decritta solo quella pagina e imposta la protezione corretta. Un thread watchdog viene eseguito in background e ri-critta qualsiasi pagina che non sia stata toccata negli ultimi 200 ms. In qualsiasi momento la maggior parte del programma è ancora crittata in memoria, quindi i memory dump catturano solo ciò che è stato acceduto di recente.
anti dump
Le 4 API più critiche (GetModuleHandleA, GetProcAddress, ExitProcess, VirtualAlloc) vengono reindirizzate attraverso funzioni wrapper all'interno dello stub. Dopo il caricamento del payload, l'intera directory delle importazioni viene azzerata, così i memory dump non possono ricostruire la tabella delle importazioni.
Grafico:
licenza
MIT
note varie
- Ci sono molte funzionalità che non ho inserito nella readme: puoi leggere il codice direttamente o dare un'occhiata a changelog.md
- Funziona sulla maggior parte dei file che ho testato; se si rompe sul tuo, apri una issue e ci do un'occhiata
- Anche suggerimenti e idee per nuove funzionalità vanno nelle issue
- Se lo usi, una stella aiuta molto <3
- Controlla il blog su https://iamsopotatoe-coder.github.io/TinyLoad/#blog per i futuri aggiornamenti
- Sì, gli AV segnalano i packer, è normale. (Attualmente ha 9 rilevamenti su VirusTotal; qualsiasi file che pacchi con esso ottiene 9 rilevamenti, il contenuto non conta)
- Per favore non usarlo per impacchettare malware: è pensato per scopi legittimi.