๋ฐ˜์‘ํ˜•

์†Œ๊ฐœ

C#์œผ๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐํฌํ•  ๋•Œ ๊ฐ€์žฅ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ •์งํ•˜๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค๋Š” ์ ์ธ๋ฐ์š”. ์ด์ „์— .Net Framework์—์„œ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๋””์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค๋Š” ํฌ์ŠคํŒ…์„ ์˜ฌ๋ฆฐ ์  ์žˆ์Šต๋‹ˆ๋‹ค.

[.Net] .Net Framework์™€ ๋””์ปดํŒŒ์ผ๋Ÿฌ(Decompiler) ILSpy ๋ฐ dotPeek ์˜ˆ์ œ

 

[.Net] .Net Framework์™€ ๋””์ปดํŒŒ์ผ๋Ÿฌ(Decompiler) ILSpy ๋ฐ dotPeek ์˜ˆ์ œ

๋””์ปดํŒŒ์ผ๋Ÿฌ(Decompiler) ํ˜น์‹œ ๋””์ปดํŒŒ์ผ๋Ÿฌ์— ๋Œ€ํ•ด ์•Œ๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ์ €๋Š” ๋””์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์•„๋งˆ๋„ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋””์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์—ญ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„

luckygg.tistory.com

๊ทธ๋ž˜์„œ C# ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ์—๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ C++ dll๋กœ, UI๋Š” C# ์ฝ”๋“œ๋งŒ ์ด์šฉํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋˜์–ด๋„ ๊ทธ๋‹ค์ง€ ํฐ ์œ„ํ—˜์€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด C++ dll import ๋˜๋Š” C++/CLI๋กœ Wrapper dll์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.

[.Net] C++/CLI ์ดํ•ดํ•˜๊ธฐ

 

[.Net] C++/CLI ์ดํ•ดํ•˜๊ธฐ

์†Œ๊ฐœ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ C# ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์‹œ .Net Decompiler์— ์˜ํ•ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์„ฑ์„ ์†Œ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. [.Net] .Net Framework์™€ ๋””์ปดํŒŒ์ผ๋Ÿฌ(Decompiler) ILSpy ๋ฐ dotPeek ์˜ˆ์ œ [.Net] .Net Fram..

luckygg.tistory.com

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” C# ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ ๋…ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ๋‚œ๋…ํ™”๋ฅผ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋‚œ๋…ํ™”์˜ ์žฅ, ๋‹จ์ ๊ณผ ConfuserEx๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚œ๋…ํ™” ์ ์šฉ ์ „, ํ›„ ๋น„๊ต

์šฐ์„ , ConfuserEx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚œ๋…ํ™”๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „๊ณผ ํ›„๋ฅผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ๋‚œ๋…ํ™” ์ „ exe ํŒŒ์ผ์„ JetBrains dotPeek๋กœ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ ๋‚˜๋ผํ•˜๊ฒŒ ๋…ธ์ถœ๋˜์ฃ ?

๋‚œ๋…ํ™” ์ ์šฉ ์ „

์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋œ exe ํŒŒ์ผ์„ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค์™€ ํ•จ์ˆ˜, ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ๋ชจ๋‘ ์ด์ƒํ•œ ๋ฌธ์ž์—ด๋กœ ์น˜ํ™˜๋˜์–ด ๋ถ„์„์ด ์–ด๋ ต๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ํ•ด๋…ํ•˜๊ณ  ์‹ถ์–ด๋„ ์•Œ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚œ๋…ํ™” ์ ์šฉ ํ›„

ConfuserEx ์žฅ์ ๊ณผ ๋‹จ์ 

์œ„์—์„œ ๋ดค๋“ฏ์ด ๋‚œ๋…ํ™”๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค, ํ•จ์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์กฐ์ฐจ ํ•ด๋…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ ์กŒ์Šต๋‹ˆ๋‹ค. ์ฆ‰, C#์—์„œ ์ง์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‚œ๋…ํ™”๋ฅผ ์ ์šฉํ•˜๋ฉด, ์ œ 3์ž๊ฐ€ ๋””์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ•ด๋…์„ ์‹œ๋„ํ•ด๋„ ์‰ฝ๊ฒŒ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์  ๋•Œ๋ฌธ์— C++ dll ์ ์šฉ์ด ํž˜๋“ค๋‹ค๋ฉด ๋‚œ๋…ํ™”๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ข‹์€ ๋ฐฉ์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„์ฃผ ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ๋””ํŽœ๋”(Windows Defender) ๋˜๋Š” ๋ฐฑ์‹  ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ”์ด๋Ÿฌ์Šค ํŒŒ์ผ๋กœ ๊ฐ์ง€๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์œˆ๋„์šฐ ๋””ํŽœ๋”๋‚˜ ๋ฐฑ์‹  ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋œ ํŒŒ์ผ์„ ์•…์„ฑ์ฝ”๋“œ๋กœ ์ธ์‹ํ•˜์—ฌ ์กฐ์น˜๊ฐ€ ์ทจํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ”์ด๋Ÿฌ์Šค ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€
๋ฐ”์ด๋Ÿฌ์Šค ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€

์กฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋””ํŽœ๋”๋‚˜ ๋ฐฑ์‹  ํ”„๋กœ๊ทธ๋žจ์—์„œ ์˜ˆ์™ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด ๋˜๋Š”๋ฐ์š”. ๋งŒ์•ฝ, ๋ณด์•ˆ์„ ์ค‘์š”์‹œํ•˜๋Š” ๊ธฐ์—…์ด๋ผ๋ฉด ๋‚œ๋…ํ™”๋Š” ์ ์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 
 
 

Visual Studio์—์„œ ์ œ๊ณตํ•˜๋Š” Dotfuscator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฑ์‹  ํ”„๋กœ๊ทธ๋žจ์— ๊ฐ์ง€๋˜์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด Dotfuscator๊ฐ€ ์œ ๋ฃŒ๋กœ ์ „ํ™˜๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์ด ์žˆ๋Š”๋ฐ์š”. ํ•ด๋‹น ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ํ…Œ์ŠคํŠธ ํ›„ ํฌ์ŠคํŒ…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ConfuserEx ์ค€๋น„ํ•˜๊ธฐ

ConfuserEx๋Š” ์•„๋ž˜ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

github.com/yck1509/ConfuserEx/releases

 

Releases · yck1509/ConfuserEx

An open-source, free protector for .NET applications - yck1509/ConfuserEx

github.com

๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œํ•˜๊ณ , ConfuserEx.exe ํŒŒ์ผ์„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์šด ๋ฐ›์€ ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œํ•œ ๋ชจ์Šต

ConfuserEx ์‚ฌ์šฉํ•˜๊ธฐ

๊ทธ๋Ÿผ ์ด์ œ ConfuserEx๋ฅผ ์‚ฌ์šฉํ•ด ๋‚œ๋…ํ™”๋ฅผ ์ ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ๋กœ C# Winform ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ , ์•„๋ž˜์ฒ˜๋Ÿผ ๊ฐ„๋‹จํžˆ ์‚ฌ์น™์—ฐ์‚ฐ์„ ํ•˜๋Š” UI๋ฅผ ์ ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ ๋ฒ„ํŠผ๋งˆ๋‹ค ์‚ฌ์น™์—ฐ์‚ฐ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๊ตฌํ˜„ ์˜ˆ์‹œ

์ด๋Œ€๋กœ ๋นŒ๋“œํ•˜๋ฉด ์ถœ๋ ฅ ํด๋”์— ์•„๋ž˜์™€ ๊ฐ™์ด exe ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ , ํ•ด๋‹น ํŒŒ์ผ์„ dotPeek๋กœ ๋ถ„์„ํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ถœ๋ ฅ ํด๋”

์ด์ œ ConfuserEx.exe๋ฅผ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ์ธก ์ƒ๋‹จ์˜ ... ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์œ„ ํ”„๋กœ์ ํŠธ์˜ ์ถœ๋ ฅ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๊ณ , ์•„๋ž˜์˜ + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋‚œ๋…ํ™”ํ•  ์‹คํ–‰ ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚œ๋…ํ™” ํด๋” ๋ฐ ์‹คํ–‰ ํŒŒ์ผ์„ ์„ ํƒํ•œ ๋ชจ์Šต

๋‹ค์Œ์œผ๋กœ Settings ํƒญ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. <Global settings>๋ฅผ ์„ ํƒํ•˜๊ณ  ์šฐ์ธก์˜ + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด Rules:์— true๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์˜ ์—ฐํ•„ ๋ชจ์–‘ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์„ค์ • ํ™”๋ฉด

Preset:์˜ ์ฝค๋ณด ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ  Maximum ํ•ญ๋ชฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ํ•ญ๋ชฉ์„ ํ…Œ์ŠคํŠธํ•ด ๋ณด์•˜์ง€๋งŒ ์™„๋ฒฝํžˆ ๋‚œ๋…ํ™”๊ฐ€ ๋˜์ง„ ์•Š๋”๊ตฐ์š”.

๋‚œ๋…ํ™” ์ˆ˜์ค€ ์„ค์ • ํ™”๋ฉด

๋งˆ์ง€๋ง‰์œผ๋กœ Protect! ํƒญ์˜ Protect! ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋‚œ๋…ํ™” ์ ์šฉ ๊ฒฐ๊ณผ

ํ”„๋กœ์ ํŠธ ์ถœ๋ ฅ ๊ฒฝ๋กœ์— Confused ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ , ๊ทธ ์•ˆ์— ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋œ exe ์‹คํ–‰ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ dotPeek๋กœ ๋ถ„์„ํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋‚œ๋…ํ™”๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚œ๋…ํ™” ์ ์šฉ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๋ชจ์Šต

๊ฒฐ๋ก 

๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์œผ๋กœ C#์œผ๋กœ ์ œ์ž‘ํ•œ ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ ์‹œ ๋‚œ๋…ํ™” ์ ์šฉ์€ ํ•„์š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ C++ dll ๋˜๋Š” C++/CLI๋กœ ์ œ์ž‘ํ•˜๊ณ , C#์—์„œ๋Š” UI ๊ด€๋ จ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” Component๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋ผ๋„ ์‹ฌ๊ฐํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , C++ dll๋„ ์—ญ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ๋ณด์•ˆ์ด ์ค‘์š”ํ•˜๊ณ  ๊ธฐ์ˆ ์  ๊ฐ€์น˜๊ฐ€ ๋†’๋‹ค๊ณ  ํ•˜๋‹ค๋ฉด ConfuserEx๊ฐ€ ์•„๋‹Œ ์œ ๋ฃŒ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•