最近集中冒出一波AutoIt的惡意腳本來,也就多看了幾個這類的樣本。AutoIt腳本是以“.au3”為擴展名的明文腳本,但病毒作者自然不會把明文的腳本放出來。所以自然用到了AutoIt自帶的這個Au2Exe的工具:
可以看到AutoIt允許用戶將au3的明文腳本編譯成exe文件或者a3x文件。exe文件自不必贅述,就是我們平時熟悉的PE文件,但如果編譯成exe文件,則失去了AutoIt腳本在惡意程序領(lǐng)域的優(yōu)勢(懂的自然懂,不細說),所以目前捕獲的大多數(shù)惡意樣本都是將腳本編譯成a3x文件。
網(wǎng)上比較多的是Exe2Au3的反編譯工具(據(jù)說早期版本的AutoIt是自帶這個工具的,后來不帶了),但下了幾個,都很耿直——真的都只能反編譯Exe文件,而對a3x文件表示無力。最后才找到了一個叫做Autoit3 Decompiler GUI的工具(https://www.jb51.net/softs/390596.html):
用這個工具,就能很簡單的將a3x文件反編譯成au3的明文腳本了。BUT——為什么萬事總有個BUT——反編譯出來的腳本看著有些憂?!?/p>
就這代碼格式……幾十行還可以忍,一兩百行已經(jīng)是上限了……惡意代碼動不動幾千行,看著腦袋都大啊……本著磨刀不誤砍柴工的思想,果斷寫了一個自動格式化腳本(by Python),貼出來和大家分享下。
說明:對AutoIt了解不多,僅針對我目前見過的腳本,做一個比較粗陋而暴力的格式化工作而已
#!/usr/bin/env python2.7
#-*- coding: utf-8 -*-
_AU3 = ';./sample.au3';
_AU3_OUT = ';./format.au3';
_INDENT = '; '; * 4
def au3formater(line, indent):
line = line.strip().lower()
next_indent = indent
if (line.startswith(';end';) or
line.startswith(';until';) or
line in (';next';, ';wend';)):
indent -= 1
next_indent -= 1
elif line.startswith(';if';) and line.endswith(';then';):
next_indent += 1
elif (line.startswith(';func';) or
line.startswith(';for';) or
line.startswith(';select';) or
line.startswith(';switch';) or
line.startswith(';while';) or
line == ';do';):
next_indent += 1
elif line.startswith(';else';) or line.startswith(';case';):
indent -= 1
new_line = _INDENT * indent + line
return new_line, next_indent
def main():
with open(_AU3, ';r';) as fp:
with open(_AU3_OUT, ';w';) as fpw:
indent = 0
line = fp.readline()
while line:
new_line, indent = au3formater(line, indent)
fpw.write(';%s\n'; % new_line)
line = fp.readline()
if __name__ == ';__main__';:
main()
格式化完成后,看著就舒服多了(不確定是否是我個人的強迫癥而已……):
當(dāng)然,即便是看著舒服些了,即便是明文腳本,幾千行的代碼看著也是很憂桑的
您可能感興趣的文章:- Python+AutoIt實現(xiàn)界面工具開發(fā)過程詳解
- python+selenium+autoit實現(xiàn)文件上傳功能
- 使用AutoIT實現(xiàn)自動登錄/退出客戶端軟件,刪除日志
- autoit 更改個人文件夾的小工具
- AutoIt3和按鍵精靈的功能對比
- autoit入門教程小結(jié)
- autoit GUI相關(guān)知識
- Python selenium使用autoIT上傳附件過程詳解