리버스 엔지니어링 · 역설계
Reverse Engineering
리버스 엔지니어링이란?
- 완성품에서 설계를 거꾸로 되살림
- 목적은 대개 복제가 아니라 이해
- AI 에이전트가 문턱을 크게 낮춤
보통의 개발은 설계에서 출발해 제품으로 끝납니다. 리버스 엔지니어링은 그 방향을 뒤집어, 이미 손에 든 완성품에서 출발해 설계와 원리를 거꾸로 짚어 올라갑니다. 기계라면 분해해 부품 구조와 치수를 재고, 소프트웨어라면 실행 파일·앱·웹페이지가 실제로 무엇을 하는지 관찰하고 내부 코드를 읽어 냅니다. 목적은 대개 복제가 아니라 이해입니다. 단종된 부품을 다시 만들거나, 문서가 사라진 사내 옛 시스템을 새 시스템으로 옮기거나, 악성코드가 무엇을 빼돌리는지 밝혀내는 일이 모두 여기에 속합니다.
소프트웨어 역분석은 두 갈래로 나뉩니다. 프로그램을 돌리지 않고 파일 자체를 읽는 정적 분석과, 실제로 실행하며 화면·네트워크·파일 변화를 지켜보는 동적 분석입니다. 정적 분석에는 기계어를 사람이 읽을 수 있는 형태로 되돌리는 디컴파일러가 쓰이는데, 그 결과는 원본 소스가 아니라 원본을 추정한 재구성본이라는 점을 기억해야 합니다. 변수 이름과 주석, 개발자의 의도는 컴파일 과정에서 이미 사라졌기 때문입니다.
비개발 조직에서 이 개념이 쓸모 있는 장면은 생각보다 가깝습니다. 외주로 만든 프로그램을 납품받을 때 계약서대로 만들어졌는지 확인하는 검수, 개인정보가 엉뚱한 곳으로 새지 않는지 보는 보안 점검, 퇴사자만 알던 업무 시스템의 규칙을 되살리는 작업이 모두 역분석의 한 형태입니다. 이때 핵심은 무엇을 알고 싶은지 질문을 먼저 정하는 것입니다. '프로그램 전체를 분석해 줘'보다 '이수 시간을 어떻게 계산하는지 알려 줘'처럼 좁힐수록 결과가 빠르고 정확해집니다.
2026년 들어 달라진 점은 이 작업에 AI가 붙었다는 것입니다. REA 같은 도구가 Ghidra·IDA 같은 전문 분석 도구를 AI 에이전트에 연결해 주면서, 예전엔 보안 전문가가 며칠 걸려 하던 추적을 자연어 질문 하나로 시작할 수 있게 됐습니다. 그만큼 경계도 분명히 해야 합니다. 분석 대상의 이용약관과 저작권법상 허용 범위를 먼저 확인하고, 알아낸 원리를 참고해 새로 만드는 것과 남의 코드를 옮겨 쓰는 것을 구분해야 합니다. 이해까지가 리버스 엔지니어링이고, 베끼는 순간부터는 다른 문제가 됩니다.
제조·군사 분야에서 상대 장비를 분해해 설계를 알아내던 관행에서 나온 말입니다. 소프트웨어 분야에서는 1990년 엘리엇 치코프스키(Elliot Chikofsky)와 제임스 크로스(James Cross)가 IEEE Software 논문에서 '대상 시스템의 구성 요소와 관계를 파악해 더 높은 추상 수준의 표현을 만들어 내는 과정'으로 정의한 것이 표준 정의로 자리 잡았습니다.
가상의 사례로 살펴보겠습니다. 임직원 610명 규모의 기계부품 제조사 A사는 2011년에 외주로 만든 교육이력 관리 프로그램을 15년째 쓰고 있었습니다. 새 LMS로 옮기기로 했는데, 개발 업체는 이미 폐업했고 소스 코드와 설계 문서는 어디에도 남아 있지 않았습니다.
- 인재개발팀 정 과장이 옛 프로그램에서 법정의무교육 이수 처리가 어떤 규칙으로 돌아가는지 수소문했지만, 아는 사람은 이미 퇴사한 전임자 한 명뿐이었습니다.
- 정보보안팀 오 대리는 이 프로그램이 회사가 대금을 치르고 넘겨받은 사내 자산이라는 점과 계약서의 권리 조항을 법무팀과 먼저 확인한 뒤 분석에 들어갔습니다.
- 오 대리가 AI 코딩 에이전트에 분석 도구를 연결해 실행 파일을 살펴보게 하자, 이수 시간이 분 단위가 아니라 30분 단위로 올림 처리되던 숨은 규칙이 이틀 만에 드러났습니다.
- 같은 방식으로 수료 기준과 재수강 처리 등 규칙 14개를 문서로 되살렸고, 그중 3개는 현행 사내 규정과 달라 인사팀이 새 LMS로 옮기기 전에 바로잡았습니다.
- 이관 뒤 첫 분기 이수 시간 정산에서 옛 시스템과 결과가 어긋난 직원은 한 명도 없었고, 외주 업체가 견적한 재분석 비용 2,400만 원도 들지 않았습니다.