콘텐츠로 이동

ILSpy - .NET 디컴파일러 치트시트

ILSpy - .NET 디컴파일러 치트시트

ILSpy는 오픈소스 .NET 어셈블리 브라우저 및 디컴파일러입니다. 컴파일 프로세스를 역으로 수행하여 Microsoft 중간 언어(MSIL/CIL)를 읽을 수 있는 고급 C#(및 기타 언어)으로 변환합니다. .NET 바이너리를 검사, 분석, 리버스 엔지니어링하기 위한 표준 무료 도구입니다. 악성 코드 분류부터 소스 없이 서드파티 라이브러리 디버깅까지 사용됩니다. Windows GUI, 크로스플랫폼 Avalonia 앱, VS Code 확장, 그리고 ilspycmd CLI로 실행됩니다.

설치

변형방법
Windows GUIGitHub Releases에서 설치 프로그램/zip 다운로드
크로스플랫폼 GUIAvaloniaILSpy 빌드 (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS Code”ILSpy .NET Decompiler” 확장 설치
CLI 확인ilspycmd --version

GUI 기본 사항

작업방법
어셈블리 열기File → Open, 또는 .dll/.exe을 드래그
종속성 로드ILSpy는 참조된 어셈블리를 자동으로 해석
네비게이션트리 확장: 어셈블리 → 네임스페이스 → 타입 → 멤버
멤버 디컴파일클릭하면 C#이 주 창에 나타남
사용 분석우클릭 → Analyze (누가 호출/사용하는가?)
검색Ctrl+F / 검색 상자에서 타입 및 멤버 검색
언어 버전 변경도구 모음 드롭다운 (C# 1.0 … 최신)
디컴파일된 프로젝트 저장File → Save Code (전체 .csproj 내보내기)

Analyze (크로스 참조)

우클릭 → Analyze 표시
Instantiated By
Used By
Assigned By / Read By (필드)
Overridden By / Overrides
Exposed By

이것은 핵심 RE 워크플로우입니다: 의심스러운 메서드를 선택하고 누가 호출하는지, 무엇을 건드리는지 추적합니다.

ilspycmd (명령줄)

명령어설명
ilspycmd Assembly.dll전체 어셈블리를 stdout으로 디컴파일
ilspycmd -o out/ Assembly.dll디렉터리로 디컴파일
ilspycmd -p -o proj/ Assembly.dll컴파일 가능한 .csproj 프로젝트로 내보내기
ilspycmd -t Namespace.Type Assembly.dll단일 타입 디컴파일
ilspycmd -il Assembly.dllC# 대신 원본 IL 표시
ilspycmd -lv CSharp10_0 Assembly.dllC# 언어 버전 설정
ilspycmd --nested-directories -p -o out/ A.dll네임스페이스를 폴더로 미러링
ilspycmd -r LIBDIR Assembly.dll어셈블리 참조 검색 경로 추가

메타데이터 & 리소스 검사

대상방법
포함된 리소스트리 → Resources 노드; Save로 추출
메타데이터 테이블View → “Metadata” (원본 테이블, 토큰)
문자열/IL언어 드롭다운을 IL로 전환
PInvoke/native메서드 서명에 표시

일반적인 워크플로우

# 의심스러운 .NET 샘플 분류: grep용 전체 소스 덤프
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# 소스를 잃은 DLL에서 빌드 가능한 프로젝트 복구
ilspycmd -p -o recovered/ MyLib.dll

# C# 디컴파일이 난독화되었을 때 원본 IL 보기
ilspycmd -il obfuscated.dll | less

심하게 난독화된 어셈블리의 경우, ILSpy를 난독화 해제 도구(예: de4dot)와 페어링한 후 정제된 바이너리를 디컴파일합니다.

ILSpy vs 다른 .NET 도구

도구타입참고
ILSpy디컴파일러 + 브라우저무료, 오픈소스, CLI + GUI
dnSpy / dnSpyEx디컴파일러 + 디버거어셈블리 편집 & 디버그
dotPeek디컴파일러무료 (JetBrains), Windows
ILDASM디스어셈블러IL만, .NET SDK와 함께 제공

리소스