Language/C#
[C#] .NET 기반 프로그램 디컴파일
0so0
2023. 8. 7. 08:20
728x90
반응형
SMALL
.NET 기반으로 작성된 프로그램을 디컴파일 하는 방법에 대한 정리
.NET
모든 운영 체제에서 기본적으로 실행할 수 있는 데스크톱, 웹 및 모바일 애플리케이션 빌드를 위한 오픈 소스 플랫폼
Linux, macOS, Windows, iOS, Android 등의 다양한 운영 체제에서 .NET 코드 실행 가능
C#, F#, Visual Basic, CLI 지원
CLR(Common Language Runtime)
서로 다른 운영 체제에서 .NET 프로그램을 컴파일하고 실행함
런타임에 특정 아키텍처에서 실행할 수 있는 기계어 코드로 번역함
.NET 환경에서의 컴파일 과정
1. 소스 컴파일 후 소스 코드는 중간언어 CIL(Common Intermediate Language)로 작성된 파일 생성
2. CLR이 런타임에 JIT(Just-In-Time)과 같은 컴파일 방식을 이용하여 OS가 이해할 수 있는 Native code로 변환
* JIT : 가상머신에 의한 런타임컴파일 방식
Decompile
컴파일된 실행파일을 소스코드로 되돌리는 것
.NET 기반의 프로그램은 런타임에 컴파일을 하기 때문에, exe 파일을 가지고 디컴파일러 툴로 소스코드를 볼 수 있음
주로 C# 프로그램을 개발할 때는 중요 부분을 Native C++로 구현하고, C++/CLI 로 변환하는 과정을 거쳐서 사용
Decompiler
디컴파일러 중 하나인 DotPeek을 사용하면 exe를 소스코드로 디컴파일 가능
하기 링크에서 다운로드 가능
https://www.jetbrains.com/decompiler/
맨 위의 ReSharper 2023.2을 Install로 변경 후 설치
설치 후 디컴파일할 exe를 drop 하면 아래와 같이 코드 확인 가능
SMALL
728x90
반응형
LIST