λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT-Engineering/AutoHotkey

Autohotkey μ—μ„œ μ»΄νŒŒμΌν•œ μ‹€ν–‰νŒŒμΌ(.exe) μ•”ν˜Έν™” 도ꡬ autohotkey-obfuscator

by 🧞‍♂️ 2016. 11. 4.
λ°˜μ‘ν˜•

맀크둜 μž‘μ„± μ–Έμ–΄λ‘œ 맀우 μœ μš©ν•œ AutoHotkey.



저도 μœ μš©ν•˜κ²Œ 잘 μ‚¬μš©ν•˜κ³  μžˆλŠ”λ°μš”,

μš”μƒˆλŠ” μ˜€ν”ˆμ†ŒμŠ€κ°€ λŒ€μ„Έμ΄κ³  νλ¦„μ΄μ§€λ§Œ 본인의 μš•μ‹¬κ³Ό μš©λ„μ— λ”°λΌμ„œλŠ” μ–Όλ§ˆλ“ μ§€

λΉ„κ³΅κ°œλ‘œ ν•  수 μžˆλŠ” 법이죠. ν•˜μ§€λ§Œ AutoHotkey μŠ€ν¬λ¦½νŠΈλŠ” λ©”λͺ¨μž₯으둜만 열어보아도

슀크립트 λŒ€λΆ€λΆ„μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.


λ‹€λ₯Έ 언어듀도 λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§(Reverse engineering)을 λ°©μ§€ν•˜κ³ μž λ§Žμ€ κΈ°μˆ μ„ λ„μž…ν•˜κ³€ ν•©λ‹ˆλ‹€.

λ²•μ μœΌλ‘œλ„ λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§μ€ λ§Žμ΄λ“€ κΈˆμ§€ν•˜κ³  있죠.


μ˜€ν† ν•«ν‚€μ—μ„œλ„ μ•”ν˜Έν™” 도ꡬλ₯Ό μ˜€ν”ˆμ†ŒμŠ€λ‘œ μ œκ³΅ν•˜λŠ” 곳이 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/davidmalia/autohotkey-obfuscator

μœ„ μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜μ…”μ„œ


ν•˜μ΄λΌμ΄νŠΈ 된 뢀뢄을 μ°¨λ‘€λ‘œ ν΄λ¦­ν•˜μ—¬(Clone or download -> Download ZIP) μ €μž₯ ν›„ μ λ‹Ήν•œ 곳에 압좕을 ν’‰λ‹ˆλ‹€.

암좕을 ν’€λ©΄ λ‹€μŒκ³Ό 같은 폴더 ꡬ쑰가 λ‚˜μ˜¬κ²λ‹ˆλ‹€.

λ¨Όμ € κ°„λ‹¨ν•œ ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ΄…μ‹œλ‹€.

ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ 폴더λ₯Ό μ•„λ¬΄κ³³μ—λ‚˜ λ§Œλ“œμ‹œκ³ , μœ„μ˜ 폴더 쀑

example-obfuscated-programs\straightobfuscation

폴더에 λ“€μ–΄κ°€μ„œ 

λ‹€μŒμ˜ μ„Έ νŒŒμΌμ„ λ³΅μ‚¬ν•©λ‹ˆλ‹€.

straightobf.ahk (μ•”ν˜Έν™” ν•˜κΈ° μœ„ν•΄ 미리 μ„€μ •λœ 파일)

straightobf_includemap.txt (μ•”ν˜Έν™”ν•  .ahk 파일 λͺ©λ‘)

straightofb_transMAP.txt (μ•”ν˜Έν™” κ²°κ³Όλ₯Ό 좜λ ₯ν•  파일)


μ—¬κΈ°μ„œ straightobf_includemap.txt을 λ¨Όμ € μ—½λ‹ˆλ‹€.

그리고 본인이 볡사해둔 폴더 κ²½λ‘œμ— λ§žμΆ”μ–΄ μ„€μ •ν•©λ‹ˆλ‹€.

제 κ²½μš°μ—” μœ„μ™€ κ°™μ•˜μŠ΅λ‹ˆλ‹€.


그리고 dynamicobfuscator-source-code\dynamicobfuscator.ahk λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

(μ˜€ν† ν•«ν‚€λŠ” μ„€μΉ˜ν•˜μ…¨λ‹€λŠ” κ°€μ • ν•˜μ— μ§„ν–‰ν•©λ‹ˆλ‹€. : http://ahkscript.org/download/ahk-install.exe )

μœ„μ™€ 같은 화면이 뜨죠?

μ°¨λ‘€λ‘œ λ²„νŠΌμ„ ν΄λ¦­ν•΄λ΄…μ‹œλ‹€. λ¨Όμ € Create Translation Map 을 ν΄λ¦­ν•©λ‹ˆλ‹€.

μ•„κΉŒ μ„€μ •ν–ˆλ˜ ν΄λ”μ˜ 파일경둜λ₯Ό μ°¨λ‘€λ‘œ μž…λ ₯ν•΄μ€μ‹œλ‹€.

λ‹€μŒμ— μ•„λž˜λŠ” λ§Œλ“€κΈ° λ²„νŠΌμ΄μ—μš” μ—΄λ¦¬λŠ” μ°½ μƒκΈ°λŠ”κ±° μ•„λ‹™λ‹ˆλ‹€. μ •ν™•ν•˜κ²Œ μž…λ ₯ν•˜μ„Έμš”.

μ œλŒ€λ‘œ μž…λ ₯ν•˜μ…¨μœΌλ©΄ Create Translation Map λ²„νŠΌμ„ 클릭!


λ‹€μ‹œ 첫 ν™”λ©΄μœΌλ‘œ λŒμ•„μ™”μŠ΅λ‹ˆλ‹€.

이제 μ•”ν˜Έν™” λͺ…령을 내릴 μ°¨λ‘€μ£ . Obfuscate Source Code λ²„νŠΌ 클릭!

μ΅œμ’… 생성될 μ•”ν˜Έν™” 파일 λͺ…λ§Œ μ›ν•˜λŠ” 경둜둜 μ§€μ •ν•˜κ³ 

Obfuscate Program λ²„νŠΌ 클릭!

이제 생성이 λ‹€ λ˜μ—ˆλ‹€λŠ” λ©”μ‹œμ§€κ°€ λœΉλ‹ˆλ‹€.

ν΄λ”λ‘œ λŒμ•„κ°€ μƒμ„±λœ .ahkνŒŒμΌμ„ μ—΄μ–΄λ΄…λ‹ˆλ‹€. (μ˜€ν† ν•«ν‚€ μ„€μΉ˜λ˜μ–΄μžˆμ„μ‹œ λ”λΈ”ν΄λ¦­ν•˜μ—¬ μ‹€ν–‰)

원본 .ahk νŒŒμΌμ„ μ‹€ν–‰ν–ˆμ„ λ•Œμ™€ 같은 λͺ¨μŠ΅μž…λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ 파일 λ‚΄λΆ€λŠ” μ–΄λ–¨κΉŒμš”?

ꡉμž₯히 λ”λŸ½κ²Œ μ•”ν˜Έν™”κ°€ 잘 λ˜μ–΄μžˆλŠ” 것을 ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

이번 Tutorial의 κ²½μš°λŠ” μ•”ν˜Έν™”μ˜ μžμ„Έν•œ 방법은 μ„€λͺ…ν•˜μ§€ μ•Šκ³  μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€λ§Œ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ 이 μ•”ν˜Έν™”λŠ” νƒ€κ²ŸμœΌλ‘œ μ„ μ •ν•œ 슀크립트 νŒŒμΌμ— λ‹€μŒκ³Ό 같은 주석을 λ„£μŒμœΌλ‘œμ¨ λ³€ν™˜μ΄ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.


이 λ‚΄μš©μ€ μ„€μΉ˜ ν΄λ”μ˜ documentationν΄λ”μ˜ index.html을 μ‹€ν–‰ν•˜μ—¬ 따라가며 보싀 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€λ§Œ μ˜μ–΄μ˜ μ••λ°•μœΌλ‘œ 인해 μ–΄λ €μšΈ μˆ˜λ„ μžˆλ‹€κ³  λ΄…λ‹ˆλ‹€.


저도 아직 초보적인 μˆ˜μ€€μ΄μ§€λ§Œ Straight Obfuscation Steps 으둜 λΆˆλ¦¬λŠ” 첫번째 λ‹¨κ³„λŠ” μ‰½κ²Œ λ”°λΌν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μš”μ•½ :

μ†ŒμŠ€ μ½”λ“œ 맨 μœ„μ— λ‹€μŒκ³Ό 같은 주석을 뢙인닀.

;$OBFUSCATOR: $FUNCS_CHANGE_DEFAULTS: ,, -1

;$OBFUSCATOR: $PARAMS_CHANGE_DEFAULTS: ,, -1

;$OBFUSCATOR: $LABELS_CHANGE_DEFAULTS: ,, -1

;$OBFUSCATOR: $GLOBVARS_CHANGE_DEFAULTS: ,, -1

;$OBFUSCATOR: $LOSVARS_CHANGE_DEFAULTS: ,, -1 


μ†ŒμŠ€ μ½”λ“œ λ§ˆμ§€λ§‰ return λ‹€μŒμ— λ‹€μŒκ³Ό 같은 주석을 뢙인닀.

;$OBFUSCATOR: $END_AUTOEXECUTE: 


λ„ˆλ¬΄ μ‰½κ²Œ μš”μ•½ν•œ κ±° μ•„λ‹Œκ°€ μ‹Άμ§€λ§Œ ν•œλ²ˆ ν…ŒμŠ€νŠΈν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€ ^^;


그럼 μ—¬κΈ°μ„œ 마무으리!

λ°˜μ‘ν˜•

λŒ“κΈ€