FileInstall을 이용한 Decompile 팁
FileInstall을 이용한 Decompile 팁
오토잇(AutoIt Script http://www.autoitscript.com)이 3.2.6.0으로 업데이트되면서 바뀐 것 중의 하나가 exe 파일을 au3로 디컴파일을 할 수 없어졌다는 겁니다.
24th August, 2007 - v3.2.6.0
Changed: AutoIt .a3x and compiled script format. Exe2Aut will only decompile 3.2.5.1
and earlier files. No ExeAut utility is supplied for ongoing versions.
그 전 버전으로 컴파일된 파일들은 au3 파일로 되돌 수가 있지만 그 이후 버전으로 컴파일된 파일은 불가능해졌습니다. 실행 파일만 공유해도 소스까지 함께 공유되고, 비밀번호를 설정해놓으면 소스 파일을 따로 보관하지 않아도 되는 편리한 방법이었습니다.
그래서 완전한 건 아니지만 디컴파일를 할 수 있는 약간의 팁을 알려 드립니다. 원래 nancy께서 사용하셨던 겁니다. 이 방법은 자신이 만든 소스에만 적용할 수 있습니다. 소스를 잃어버리고 파일만 가지고 있을 때에만 유용한 방법입니다.
FileInstall 함수를 이용한 방법인데요. FileInstall 함수는 AutoIt으로 단일 파일을 만드는 방법을 설명할 때 잠깐 얘기한 적이 있습니다.
실행파일을 컴파일할 때, 실행 파일에 FileInstall 함수로 자기 자신의 소스 파일을 포함하도록 하는 겁니다.
커맨드라인 매개변수에 'decompile'이 들어있을 때 저장된 소스 파일을 추출합니다. decompile 대신에 본인만의 암호를 넣어두면 다른 사람은 디컴파일을 할 수가 없겠죠.
If StringInStr($CMDLineRaw, 'decompile') Then Global $sPath = FileSaveDialog('Save source', @WorkingDir, 'Autoit Script(*.au3)', 16) If Not @error then If StringRight($sPath, 4) <> '.au3' Then $sPath &= '.au3' FileInstall('파일이름.au3', $sPath & '\') EndIf Exit EndIf
5번째 줄의 FileInstall 다음에 지금 사용하는 파일 이름을 써 줘야 하는데, 이곳에는 매크로나 변수를 사용할 수 없고 파일이름을 직접 써줘야 합니다. 경로는 쓸 필요가 없습니다.
이 방법은 지난 버전의 Exe2Aut가 디컴파일을 하는 방식과 조금 다른데요. Exe2Aut는 include된 파일까지 몽땅 풀어주지만 FileInstall 함수를 이용하는 방법은 원 소스 하나만 풀어낼 수 있습니다.
소스를 잃어버릴 때 또는 수정한 내용 때문에 문제가 생길 때를 대비해서 미리 적용해 놓은 것도 좋습니다.
AutoIt3Wrapper를 이용하는 방법
AutoIt3Wrapper에도 소스를 첨부하는 옵션이 있습니다.
SciTE4AutoIt3 도움말 우리말 번역본 - SciTE4AutoIt3 AutoIt3Wrapper
위 방법보다 쉬운데요. 컴파일할 때 아래 내용을 소스의 제일 윗부분에 추가하면 됩니다.
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_SaveSource=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
이 때는 소스파일이 리소스에 포함되기 때문에 ResHacker같은 전문 프로그램을 이용해야 소스를 볼 수 있습니다.
주의하실 점은 UPX 압축을 하면 리소스를 바로 볼 수 없기때문에 UPX 압축 옵션을 사용하지 않거나, UPX 압축을 해제한 후에 리소스 편집 프로그램으로 열어봐야합니다.
이 방법 역시 원본 소스하나만 저장할 수 있습니다.
Autoit으로 단일파일 만들기 1 - FileInstall
Autoit으로 단일파일 만들기 2 - resources.au3
SciTE4AutoIt3 도움말 우리말 번역본 - SciTE4AutoIt3 AutoIt3Wrapper
'Autoit > AutoIt' 카테고리의 다른 글
자동로그인하는 방법 - IE 함수 이용 (0) | 2011.03.23 |
---|---|
GUICoordMode, GUISetCoord - GUI 컨트롤의 위치 설정 (2) | 2011.02.14 |
오토잇(AutoIT) 오류 메시지(Error Message)와 해결 방법 (2) | 2010.08.06 |
배열 함수 2가지 (0) | 2009.11.08 |
AutoIt에서 Global, Local, Dim 선언의 차이 (0) | 2009.04.16 |
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프 | ||
---|---|---|