
PE 바이너리에 내장된 AutoIt 스크립트 추출
PE 실행 파일에서 "컴파일된" AutoIt 스크립트를 추출할 수 있는 짧은 파이썬 스크립트입니다.
이 스크립트는 3개의 자료를 크게 기반으로 하며, AutoIt에 대해 더 깊이 알아보고 싶다면 꼭 확인해 보세요:
EA05 AutoIt3.00EA06 AutoIt3.26JB01 AutoHotKey v1JB01 AutoIT2python3 -m pip install autoit-ripper
또는 소스에서 버전을 설치하려면:
git clone https://github.com/nazywam/AutoIt-Ripper.git
cd AutoIt-Ripper
pip install .
파이썬 스크립트에서:
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)
명령줄에서:
autoit-ripper sample.exe out_directory
도움말 메시지:
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)
| 필드 | 길이 | 암호화 (EA05) | 암호화 (EA06) | 설명 |
|---|
| "FILE" | 4 | MT(0x16FA) | LAME(0x18EE) | 정적 문자열 |
| 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) | 컴파일된 스크립트의 경로 |
| compressed | 1 | None | None | 스크립트가 압축되었는지 여부 |
| data_size | 4 | xor(0x45AA) | xor(0x87BC) | 압축된 데이터 크기 |
| code_size | 4 | xor(0x45AA) | xor(0x87BC) | 압축되지 않은 데이터 크기 |
| crc | 4 | xor(0xC3D2) | xor(0xA685) | 압축된 데이터 CRC 체크섬 |
| creation date | 4 | None | None | 파일 생성 날짜 (상위) |
| creation date | 4 | None | None | 파일 생성 날짜 (하위) |
| last update date | 4 | None | None | 마지막 수정 날짜 (상위) |
| last update date | 4 | None | None | 마지막 수정 날짜 (하위) |
| data | data_size | MT(checksum + 0x22af) | LAME(0x2477) | 스크립트 데이터 |
| v3.00 | v3.26 |
|---|
| 코드 저장 | 매직으로 grep됨 | "SCRIPT" 리소스 (매직으로 grep됨?) |
| 문자열 인코딩 | UTF-8 | UTF-16 |
| 암호화 | xor/사용자 지정 MT19937 | xor/LAME crypt |
| 코드 암호화 키 | 동적 | 정적 |
| 압축 | 예 | 예 |
| 코드 "컴파일" | 아니요 | 예 |
| 매직 | EA05 | EA06 |