Home

Awesome

AutoIt-Ripper

What is this

This is a short python script that allows for extraction of "compiled" AutoIt scripts from PE executables.

References

This script is heavily based on 3 resources, definitely check them out if you want to dig a bit deeper into AutoIt stuff:

Supported AutoIt versions

Ready:

Unknown:

Installation

python3 -m pip install autoit-ripper

or, if you'd like to install the version from sources:

git clone https://github.com/nazywam/AutoIt-Ripper.git
cd AutoIt-Ripper
pip install .

Running

From a python script:

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)

From the commandline:

autoit-ripper sample.exe out_directory

Help message:

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,guess}
                        extract a specific version of AutoIt script (default: guess)

Format documentation

(In progress)

AU3 header

FieldLengthencryption (EA05)encryption (EA06)Notes
"FILE"4MT(0x16FA)LAME(0x18EE)static string
flag4xor(0x29BC)xor(0xADBC)
auto_strflag (* 2)MT(0xA25E + flag)LAME(0xB33F + flag)UTF-8/UTF-16
path_len4xor(0x29AC)xor(0xF820)
pathpath_len (* 2)MT(0xF25E + path_len)LAME(0xF479 + path_len)Path of the compiled script
compressed1NoneNoneis the script compressed
data_size4xor(0x45AA)xor(0x87BC)compressed data size
code_size4xor(0x45AA)xor(0x87BC)uncompressed data size
crc4xor(0xC3D2)xor(0xA685)compressed data crc checksum
creation date4NoneNonefile creation date (high)
creation date4NoneNonefile creation date (low)
last update date4NoneNonelast edit date (high)
last update date4NoneNonelast edit date (low)
datadata_sizeMT(checksum + 0x22af)LAME(0x2477)script data

Differences between v3.00 and v3.26+

v3.00v3.26
Code storagegreped by magic"SCRIPT" resource (/greped by magic?)
String encodingUTF-8UTF-16
Encryptionxor/custom MT19937xor/LAME crypt
Code encryption keydynamicstatic
Compressionyesyes
Code "compilation"noyes
MagicEA05EA06