본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

de4dot

0

de4dot은 .NET 어셈블리의 난독화 및 패킹을 해제하는 오픈 소스 도구입니다. C#로 작성되었으며, 다양한 난독화 기법을 역추적하여 어셈블리를 가능한 한 원래 상태에 가깝게 복원합니다.

난독화 해제디컴파일러보안 도구어셈블리 분석오픈소스

소개

de4dot은 .NET 어셈블리의 난독화 및 패킹을 해제하는 오픈 소스 도구입니다. C#로 작성되었으며, 다양한 난독화 기법을 역추적하여 어셈블리를 가능한 한 원래 상태에 가깝게 복원합니다. 0xd4d 개발자에 의해 유지 관리되며, GPL-3.0 라이선스 하에 배포됩니다. 주로 .NET 어셈블리의 문자열 암호화, 메서드 인라인, 가상화된 코드, 리소스 암호화 등을 해제하는 데 사용됩니다.

상세정보

난독화 해제 기능

de4dot은 다음과 같은 난독화 기법을 처리할 수 있습니다:

  • 인라인 메서드 복원
  • 문자열 암호화 해제 (정적 및 동적)
  • 상수 암호화 해제 (정수, 실수 등)
  • 메서드 암호화 해제 (정적 및 동적)
  • 프록시 메서드 제거
  • 심볼 이름 복원 (가능한 경우)
  • 가상화된 코드 디버추얼라이즈
  • 리소스 및 임베디드 파일 암호화 해제
  • 탐지 방지 및 안티-디버그 코드 제거
  • 제어 흐름 난독화 해제
  • 클래스 필드 복원
  • PE 실행 파일을 .NET 실행 파일로 변환
  • 정크 클래스 제거
  • PE 검증 오류 수정
  • 메서드 매개변수 및 필드 타입 복원

지원 난독화 도구

다음과 같은 난독화 도구에 대한 지원을 제공합니다:

  • Agile.NET (aka CliSecure)
  • Babel.NET
  • CodeFort
  • CodeVeil
  • CodeWall
  • CryptoObfuscator
  • DeepSea Obfuscator
  • Dotfuscator
  • .NET Reactor
  • Eazfuscator.NET
  • Goliath.NET
  • ILProtector
  • MaxtoCode
  • MPRESS
  • Rummage
  • Skater.NET
  • SmartAssembly
  • Spices.Net
  • Xenocode

기본 사용법 (N00b 사용자)

파일을 de4dot.exe로 드래그 앤 드롭하면 몇 초 내에 처리됩니다.

여러 파일 일괄 처리

여러 어셈블리를 한 번에 처리해야 할 때는 다음과 같이 재귀 검색 옵션을 사용합니다:

de4dot -r c:input -ru -ro c:output

이 명령은 c:input 폴더를 재귀적으로 검색하여 지원되는 난독화가 적용된 모든 어셈블리를 처리하고, 결과를 c:output에 저장합니다. -ru 옵션은 알 수 없는 파일을 무시하고, -ro 옵션은 출력 디렉터리를 지정합니다.

난독화 도구 감지

파일을 해제하지 않고 난독화 도구만 감지하려면 -d 옵션을 사용합니다:

de4dot -d -r c:input</n

지원되는 난독화 도구로 감지된 파일만 보려면 -ru 옵션을 추가합니다:

de4dot -d -r c:input -ru

특정 파일에 대해 난독화 도구를 감지하려면 다음과 같이 입력합니다:

de4dot -d file1.dll file2.dll file3.dll

메타데이터 토큰 보존

특정 경우 메타데이터 토큰을 보존해야 할 때는 다음과 같은 옵션을 사용할 수 있습니다:

중요한 토큰 모두 보존:

de4dot --preserve-tokens file1.dll

토큰 보존 및 타입/필드 추가 유지:

de4dot --keep-types --preserve-tokens file1.dll

토큰 보존 및 Param 행 생성 방지:

de4dot --dont-create-params --preserve-tokens file1.dll

Param 토큰 제외하고 모든 토큰 보존:

de4dot --preserve-table all,-pd file1.dll

동적 문자열 복호화

지원되지 않는 난독화 도구의 문자열을 복호화해야 할 때는 다음과 같이 사용할 수 있습니다:

de4dot file1.dll --strtyp delegate --strtok 06012345 --strtok 060ABCDE

이 명령은 어셈블리를 메모리에 로드하고 실행하므로, 악성 파일을 의심되는 경우 샌드박스 환경에서 실행해야 합니다.

난독화 도구 강제 지정

자동 감지가 실패한 경우 특정 난독화 도구로 강제 지정할 수 있습니다:

de4dot file1.dll -p sa  // SmartAssembly로 강제
de4dot file1.dll -p un  // 지원되지 않는 난독화 도구로 강제

심볼 이름 변경 비활성화

WPF 또는 Silverlight 앱에서 문제가 발생할 경우 이름 변경을 비활성화할 수 있습니다:

de4dot --dont-rename file1.dll file2.dll

특정 심볼 유형에 대해 이름 변경 비활성화:

de4dot --keep-names pem file1.dll  // 속성, 이벤트, 메서드 제외하고 이름 변경

제한 사항·확인 사항

심볼 이름 변경은 원래 이름을 복원할 수 없으며, 이는 난독화 과정에서 원래 이름이 제거되기 때문입니다. 따라서 리네이밍은 가독성을 위해 임의 이름을 부여하는 데 그칩니다.

일부 난독화 도구는 어셈블리와 모든 종속성을 메모리에 로드하여 실행할 수 있습니다. 악성 파일을 의심되는 경우 반드시 샌드박스 환경에서 사용해야 합니다.

현재 버전이 특정 어셈블리를 메모리에 로드하지 않더라도, 미래 버전에서는 그렇게 할 수 있으므로 항상 주의가 필요합니다.

최신 버전·업데이트

현재 버전은 0.0.0.15이며, 최신 소스 코드와 릴리스 정보는 GitHub 저장소에서 확인할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.