기타 개발

실행파일(.exe) 소스 코드 추출 하기 -1-

Drider 2026. 5. 21. 15:26

실행 파일(.exe) 하나만 달랑 있는 경우,

이는 보통 '리소스 통합 빌드(Single File Publish)' 방식을 사용한 것.

사실 그 파일 안에 실제 로직과 다양한 라이브러리들이 압축되어 들어있다.

 

이 파일이 어떤 스택으로 만들어졌는지 분석하는 '역공학의 기초'를 알아보자. 

 

가령, qwer.exe 라는 가상의 프로그램을 분석한다고 해보자.

 

 

1. Detect It Easy (DIE)

DIE라는 무료 도구를 사용하면 해당 파일이 어떤 언어로 작성되었는지 바로 알 수 있다.

  • 분석 가능 항목: 작성 언어(C++, Rust, C#, Go 등), 사용된 라이브러리, 패커(Packer, 코드를 숨기기 위한 압축 도구) 정보.
  • 만약 여기서 "Rust"가 뜬다면 Tauri일 가능성이 높고, "DirectUI"나 ".NET"이 뜬다면 C# 기반의 커스텀 에디터일 가능성이 높다.

2. DIE를 다운로드, 실행 및 파일 임포트

해당 qwer.exe를 DIE 창에다가 드래그로 끌어 놓으면 된다.

 

 

DIE 화면

 

 

3. 알 수 있는 것.

흥미로운 결과! 

'Detect It Easy' 분석 결과가 명확하게 답을 해준다.

이미지 결과를 분석해 보면, qwer.exe는 "내가 추구하는 모토와 아주 유사한 방식으로 제작되었다."

구체적인 분석 내용은 다음과 같다.

A. 핵심 언어: Rust

  • 중간의 (Heur) Language: Rust 항목. 이 프로그램이 Rust 언어로 작성되었음을 보여준다.
  • 이는 Tauri 기술 스택일 확률이 99.9%. "Rust를 기반으로 하면서 UI를 가볍게 돌릴 수 있는 현재 유일한 크로스 플랫폼 대안."

B. 파일 크기: 20 MiB

  • 매우 이상적인 크기. 일렉트론(Electron)으로 만들었다면 최소 80~150MB가 나왔을 텐데, 30MB 이하라는 것은 Rust의 강력한 최적화와 OS 내장 웹뷰를 사용하고 있다는 명확한 증거.

C. 기술 유출 방지 및 보안

  • 빨간색으로 표시된 Packer: Generic [Section #1 (".rdata") compressed] 항목이 중요.
  • qwer.exe 개발팀도 기술 보호를 위해 실행 파일을 그냥 내보낸 것이 아니라, 압축(Packing) 과정을 거쳐 내부 리소스를 분석하기 어렵게 감싸두었음.
  • 컴파일러로 Microsoft Visual C/C++를 사용했다는 것은 윈도우 환경에서 가장 안정적인 바이너리 최적화 옵션을 선택했다는 뜻.

결론: 방향이 명확해졌음.

분석 결과 qwer.exe는 "Rust 기반의 초경량 에디터"라는 트렌드를 정확히 따르고 있는 앱이다.

이보다 더 좋거나 경쟁력 있는 에디터를 만들고 싶으시다면 다음 스택이 정답일 것이다.

  1. 언어: Rust (보안과 성능 두 마리 토끼를 다 잡은 선택.)
  2. 프레임워크: Tauri (이미 qwer.exe가 성능을 증명하고 있음.)
  3. 차별화 전략 (기술 유출 방지 고도화):
    • qwer.exe처럼 실행 파일을 압축(Pack)하는 것에 더해, Rust의 매크로를 활용하여 주요 로직을 더 복잡하게 꼬아놓거나(Obfuscation).
    • SQLCipher(암호화 DB)를 사용해 로컬 데이터 자체를 강력하게 잠그는 방식을 도입하면 qwer.exe 이상의 보안성을 확보할 수 있음.
  4. UI: Svelte나 React 중 내가 익숙한 것을 쓰되, qwer.exe처럼 20~30MB 대의 가벼움을 유지하도록 자산(Assets) 관리에 신경 쓰면 됨.

 

이번 편은 이렇게 DIE로 실행파일(해당 프로그램)의 개략적 정보를 알아내는 시나리오를 살펴봤다.

다음 편에서는 이제 본격적으로 qwer.exe에서 소스 코드를 추출하는 과정을 알아보도록 하겠다.

 

-계속-