※ 이 문서는 뭐 그냥 하면 되지. ()에서 인쇄하였으며,
저작권은 해당 블로그 운영자에게 있습니다.

FileInstall을 이용한 Decompile 팁

/Autoit/AutoIt :: 2011. 2. 8. 12:30

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

블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. =>  자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프
굿네이버스 배너
사랑의 열매 배너
아름다운 재단 배너 어린이 재단 배너 유니세프 한국위원회 - 배너