
Extraer scripts de AutoIt incrustados en binarios PE
Este es un script corto de Python que permite extraer scripts de AutoIt "compilados" de ejecutables PE.
Este script está en gran medida basado en 3 recursos, definitivamente échales un vistazo si quieres profundizar un poco más en el tema de AutoIt:
EA05 AutoIt3.00EA06 AutoIt3.26JB01 AutoHotKey v1JB01 AutoIT2python3 -m pip install autoit-ripper
o, si quieres instalar la versión desde las fuentes:
git clone https://github.com/nazywam/AutoIt-Ripper.git
cd AutoIt-Ripper
pip install .
Desde un script de Python:
from autoit_ripper import extract, AutoItVersion
with open("sample.exe", "rb") as f:
file_content = f.read()
# EA05 for v3.00+, EA06 for v3.26+
# Omitting `version` or passing None will try both versions
content_list = extract(data=file_content, version=AutoItVersion.EA06)
Desde la línea de comandos:
autoit-ripper sample.exe out_directory
Mensaje de ayuda:
autoit-ripper --help
usage: autoit-ripper [-h] [--verbose] [--ea {EA05,EA06,guess}] file output_dir
positional arguments:
file input binary
output_dir output directory
optional arguments:
-h, --help show this help message and exit
--verbose, -v
--ea {EA05,EA06,JB01,guess}
extract a specific version of AutoIt script (default: guess)
| Campo | Longitud | cifrado (EA05) | cifrado (EA06) | Notas |
|---|
| "FILE" | 4 | MT(0x16FA) | LAME(0x18EE) | cadena estática |
| flag | 4 | xor(0x29BC) | xor(0xADBC) | |
| auto_str | flag (* 2) | MT(0xA25E + flag) | LAME(0xB33F + flag) | UTF-8/UTF-16 |
| path_len | 4 | xor(0x29AC) | xor(0xF820) | |
| path | path_len (* 2) | MT(0xF25E + path_len) | LAME(0xF479 + path_len) | Ruta del script compilado |
| compressed | 1 | None | None | si el script está comprimido |
| data_size | 4 | xor(0x45AA) | xor(0x87BC) | tamaño de los datos comprimidos |
| code_size | 4 | xor(0x45AA) | xor(0x87BC) | tamaño de los datos sin comprimir |
| crc | 4 | xor(0xC3D2) | xor(0xA685) | checksum crc de los datos comprimidos |
| fecha de creación | 4 | None | None | fecha de creación del archivo (parte alta) |
| fecha de creación | 4 | None | None | fecha de creación del archivo (parte baja) |
| fecha de última modificación | 4 | None | None | fecha de última modificación (parte alta) |
| fecha de última modificación | 4 | None | None | fecha de última modificación (parte baja) |
| data | data_size | MT(checksum + 0x22af) | LAME(0x2477) | datos del script |
| v3.00 | v3.26 |
|---|
| Almacenamiento del código | localizado por magic | recurso "SCRIPT" (¿localizado por magic?) |
| Codificación de cadenas | UTF-8 | UTF-16 |
| Cifrado | xor/custom MT19937 | xor/cifrado LAME |
| Clave de cifrado del código | dinámica | estática |
| Compresión | sí | sí |
| "Compilación" del código | no | sí |
| Magic | EA05 | EA06 |