지식 · IT·데이터·DX

디컴파일 · 디스어셈블

Decompilation / Disassembly

📂IT·데이터·DX⏱읽기 2분📊실무🔗관련 7

디컴파일이란?

한 줄 정의
사람이 읽을 수 없는 기계어로 바뀐 프로그램을 다시 읽을 수 있는 형태로 되돌리는 작업입니다. 디스어셈블은 기계어를 어셈블리어로, 디컴파일은 한 단계 더 나아가 C 같은 고급 언어 형태로 되돌립니다.
이 주제, 사내 교육으로📚 관련 과정💬 교육 문의
⚡ 3줄 요약
  • 기계어를 사람이 읽는 형태로 되돌리기
  • 결과는 원본이 아닌 추정 재구성본
  • 배포한 코드는 남도 읽을 수 있다

개발자가 쓴 소스 코드는 컴파일이라는 과정을 거쳐 컴퓨터가 실행하는 기계어로 바뀝니다. 이 과정에서 변수 이름, 주석, 함수를 나눈 의도 같은 사람을 위한 정보는 대부분 버려집니다. 디스어셈블은 기계어를 명령어 단위의 어셈블리어로 한 줄씩 옮기는 일이고, 디컴파일은 그 명령어 묶음을 분석해 조건문과 반복문이 보이는 고급 언어 형태로 다시 짜 맞추는 일입니다. 결과물은 원본이 아니라 '이런 코드였을 것'이라는 추정 재구성본이고, 그래서 흔히 의사코드라고 부릅니다.

비유하자면 번역본을 다시 원문 언어로 되돌리는 것과 비슷합니다. 뜻은 상당 부분 살아나지만 원작자의 문체와 단어 선택까지 똑같이 돌아오지는 않습니다. 디컴파일된 코드에서 함수 이름이 FUN_00401a20처럼 의미 없는 기호로 나오는 이유가 여기에 있습니다. 최근에는 AI가 이런 결과물을 읽고 '이 함수는 비밀번호를 검사하는 것으로 보입니다'처럼 이름과 설명을 붙여 주는 단계까지 와서, 분석 속도가 크게 빨라졌습니다.

실무에서 디컴파일 결과를 볼 일이 생긴다면 읽는 요령은 단순합니다. 함수 이름이나 변수 이름보다 어떤 파일을 열고, 어디로 데이터를 보내고, 어떤 조건에서 멈추는지를 먼저 봅니다. 동작의 뼈대가 거기서 드러나기 때문입니다. 요즘은 이 결과를 AI에 붙여 넣고 '이 코드가 하는 일을 업무 용어로 설명해 줘'라고 묻는 방식이 가장 빠른 출발점입니다.

모든 프로그램이 똑같이 읽히는 것도 아닙니다. 자바·.NET·자바스크립트처럼 중간 형태로 배포되는 프로그램은 원본에 꽤 가깝게 되살아나는 반면, C·C++로 만든 프로그램은 훨씬 거칠게 나옵니다. 특히 웹 서비스의 자바스크립트는 누구나 브라우저에서 내려받을 수 있어서, 화면 코드에 넣은 API 키나 관리자 주소는 숨겨진 것이 아닙니다. 바이브 코딩으로 사내 도구를 만드는 부서가 늘면서 이 점을 모른 채 비밀값을 화면 코드에 넣는 사고가 자주 나옵니다. 분석을 어렵게 만드는 난독화 기법도 있지만 늦추는 효과일 뿐 완전히 막지는 못합니다.

💡 쉽게 말하면
완성된 레고 작품을 보고 조립 설명서를 다시 그리는 일과 비슷합니다. 어떤 블록이 어디 들어갔는지는 알아낼 수 있어도, 처음 만든 사람이 단계마다 붙인 이름은 알 수 없습니다.
실무에서 왜 중요한가
디컴파일의 한계와 가능성을 알면 두 가지 판단이 쉬워집니다. 분석 결과를 얼마나 믿을지, 그리고 우리가 배포한 코드에서 무엇이 남에게 읽힐 수 있는지입니다.
디스어셈블 vs 디컴파일
구분디스어셈블디컴파일
결과물어셈블리어(명령어 단위)의사코드(C 비슷한 고급 언어)
읽기 난도전문가용개발자라면 대략 읽힘
정확도기계어와 1:1 대응구조를 추정해 재구성
유래와 출처

1960년대 컴퓨터 기종을 바꿀 때 소스가 없는 옛 프로그램을 새 기종으로 옮기기 위해 처음 쓰였습니다. 2019년 미국 국가안보국(NSA)이 내부에서 쓰던 분석 도구 Ghidra를 오픈소스로 공개하면서, 고가의 상용 도구 없이도 누구나 쓸 수 있는 기술이 됐습니다.

출처 · NSA, Ghidra 오픈소스 공개(2019)
사례로 이해하기

가상의 사례로 살펴보겠습니다. 임직원 390명 규모의 식품 유통사 A사 마케팅팀은 바이브 코딩으로 고객 문의를 AI가 분류해 주는 사내 웹 도구를 2주 만에 만들어 쓰고 있었습니다. 외부 협력사도 볼 수 있게 인터넷에 열어 둔 상태였습니다.

  1. 보안 점검을 맡은 IT팀 윤 대리가 브라우저 개발자 도구로 이 페이지의 자바스크립트를 내려받아 읽어 보니, AI 서비스 결제 계정의 키가 그대로 들어 있었습니다.
  2. 마케팅팀 서 과장은 '코드는 화면 뒤에 있으니 안 보이는 줄 알았다'고 했고, 윤 대리는 브라우저로 전달되는 코드는 전부 공개된 것과 같다고 설명했습니다.
  3. 사용 기록을 확인해 보니 지난 한 달 요청 가운데 약 18%가 사내에서 보낸 적 없는 호출이었고, 윤 대리는 그 자리에서 키를 폐기하고 새 키를 발급했습니다.
  4. 새 판에서는 AI 호출이 사내 서버를 거치도록 바꿔 키를 서버에만 두었고, 협력사 접속도 로그인을 거쳐야만 열리도록 구조를 바꿨습니다.
  5. 이후 마케팅팀은 직접 만든 웹 도구를 외부에 열기 전 IT팀의 화면 코드 비밀값 점검을 거치기로 했고, 첫 분기에 같은 문제 두 건을 공개 전에 잡아냈습니다.
관련 용어
리버스 엔지니어링 · 역설계완성된 제품이나 소프트웨어를 거꾸로 뜯어보며 어떻게 만들어졌고 어떻게 작동하는지를 알아내는 일입니다. 설계도 없이 결과물에서 설계를 되살린다는 뜻에서 역설계라고도 부릅니다.REA · Reverse Engineer AnythingAI 코딩 에이전트를 Ghidra·IDA 같은 리버스 엔지니어링 도구에 연결해, 소스 코드 없이도 앱과 프로그램이 어떻게 작동하는지 분석하게 해 주는 오픈소스 MCP 서버 겸 명령줄 도구입니다. REA는 Reverse Engineer Anything의 줄임말입니다.바이브 코딩코드를 직접 짜지 않고, 만들고 싶은 것을 자연어로 AI에게 설명해 프로그램을 완성하는 새로운 개발 방식.사이버 보안해킹·유출·악성코드 등 디지털 위협으로부터 시스템·데이터·사용자를 지키는 전반적 방어 활동.API응용 프로그램 프로그래밍 인터페이스(Application Programming Interface)로, 프로그램끼리 정해진 규칙으로 데이터·기능을 주고받게 해주는 '창구'. 식당의 메뉴판처럼, 무엇을 어떻게 요청하면 되는지를 약속해 둔 것.오픈소스소스코드를 누구나 보고, 쓰고, 고치고, 나눌 수 있게 공개한 소프트웨어. 오늘날 IT의 상당수가 오픈소스 위에 세워져 있다.소프트웨어 역분석과 법 · 프로그램코드역분석남이 만든 소프트웨어를 뜯어보는 일이 어디까지 허용되는지를 정하는 규칙입니다. 국내에서는 저작권법의 프로그램코드역분석 조항, 영업비밀 보호 규정, 그리고 제품 이용약관이 함께 경계를 정합니다.
이 용어와 연결된 교육
📚바이브 코딩 보안 — 내가 만든 AI 웹앱 안전 점검나눔경영컨설팅 기업교육 · 대면/온라인과정 보기 →
이 주제로 사내 교육이 필요하신가요?
담당자 맞춤 커리큘럼·견적을 바로 받아보세요.
교육 문의하기
최종 수정 2026-10-19 · 감수 김종혁

자주 묻는 질문

아닙니다. 동작은 거의 같지만 변수 이름·주석·구조는 추정입니다. 자바·.NET처럼 원본에 가깝게 되살아나는 언어도 있고, C·C++처럼 훨씬 거칠게 나오는 언어도 있습니다.
배포된 프로그램이라면 원칙적으로 가능합니다. 특히 웹 화면의 자바스크립트는 누구나 내려받을 수 있으니, 비밀번호·API 키 같은 값은 반드시 서버 쪽에 두어야 합니다.
분석을 어렵고 느리게 만들 뿐 완전히 막지는 못합니다. 중요한 비밀은 배포물에 넣지 않는 것이 유일하게 확실한 방법입니다.
목적과 대상에 따라 다릅니다. 저작권법은 호환에 필요한 정보를 얻기 위한 프로그램코드역분석을 일정 조건에서 허용하지만, 이용약관이 금지하거나 베끼려는 목적이라면 문제가 됩니다.