AutoIt 스 크 립 트 의 역 컴 파일 과 코드 포맷 문제 분석

최근 집중 적 으로 AutoIt 의 악의 적 인 발 이 튀 어 나 와 이런 샘플 을 몇 개 더 봤 다.AutoIt 스 크 립 트 는'au3'를 확장자 로 하 는 명문 스 크 립 트 이지 만 바이러스 작성 자 는 당연히 명문 스 크 립 트 를 풀 지 않 습 니 다.그래서 자 연 스 럽 게 AutoIt 가 가지 고 있 는 이 Au2Exe 의 도 구 를 사 용 했 습 니 다.

AutoIt 는 사용자 가 au3 의 명문 스 크 립 트 를 exe 파일 이나 a3x 파일 로 컴 파일 할 수 있 도록 합 니 다.exe 파일 은 군말 할 필요 가 없습니다.바로 우리 가 평소에 알 고 있 는 PE 파일 입 니 다.그러나 exe 파일 로 컴 파일 되면 AutoIt 스 크 립 트 가 악성 프로그램 분야 에서 의 장점(알 고 있 는 것 은 자 연 스 럽 게 알 고 자세히 말 하지 않 음)을 잃 기 때문에 현재 캡 처 된 대부분의 악성 샘플 은 스 크 립 트 를 a3x 파일 로 컴 파일 합 니 다.
인터넷 에 비교적 많은 것 은 Exe2Au 3 의 반 컴 파일 도구(초기 버 전의 AutoIt 는 이 도 구 를 가지 고 있 었 는데 나중에 가지 고 오지 않 았 다 고 합 니 다)입 니 다.그러나 몇 개 를 내 렸 을 때 모두 강직 합 니 다.-정말 Exe 파일 을 역 컴 파일 할 수 밖 에 없 었 고 a3x 파일 에 힘 이 없 었 습 니 다.마지막 으로 Autoit 3 Decompiler GUI 라 는 도 구 를 찾 았 습 니 다(https://www.jb51.net/softs/390596.html).

이 도 구 를 사용 하면 a3x 파일 을 au3 의 명문 스 크 립 트 로 쉽게 컴 파일 할 수 있 습 니 다.BUT―왜 모든 일 에 BUT 가 있 습 니까?-역 컴 파일 된 대본 이 좀 걱정 스 럽 습 니 다....................................................

이 코드 형식 으로.....................................................................................
설명: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
'; % new_line) line = fp.readline() if __name__ == ';__main__';: main()
포맷 이 끝나 면 보기 가 훨씬 편 해 집 니 다.

물론 보기 편 하 더 라 도 명문 스 크 립 트 라 도 수천 줄 의 코드 가 보기 에는 매우 걱정스럽다.

좋은 웹페이지 즐겨찾기