
무슨 일이 있었나요?
리버스 엔지니어링(역공학)이나 보안 분야에서 조용히, 그러나 거의 모든 곳에 쓰이는 도구가 있어요. 바로 Capstone이라는 디스어셈블리(disassembly) 프레임워크예요. "멀티 플랫폼, 멀티 아키텍처"를 내세우는데, 한마디로 기계어(컴퓨터만 읽는 0과 1 덩어리)를 사람이 읽을 수 있는 어셈블리 코드로 번역해주는 엔진이에요.
디스어셈블리가 뭔가요?
차근차근 설명할게요. 우리가 C나 Go로 코드를 짜면, 컴파일러가 그걸 기계어로 바꿔요. CPU는 사람이 쓴 글자가 아니라 이 기계어 바이트(예: 55 48 89 e5 같은 16진수 숫자)만 이해하거든요.
그런데 보안 분석가나 악성코드 연구자는 반대 방향이 필요해요. 소스 코드 없이 실행 파일(.exe 같은)만 손에 들어왔을 때, 그 안의 기계어를 보고 "이 프로그램이 대체 무슨 짓을 하는 거지?"를 알아내야 하거든요. 이때 기계어 바이트를 mov, push, call 같은 어셈블리 명령어로 되돌려 번역하는 게 바로 디스어셈블이에요. Capstone이 정확히 이 번역을 해주는 핵심 엔진이에요.
Capstone이 특별한 이유
첫째, 엄청나게 많은 아키텍처를 지원해요. 우리 PC의 x86/x64는 물론이고, 스마트폰의 ARM, 그리고 MIPS, PowerPC, RISC-V 등 CPU 종류가 달라도 다 번역해줘요. CPU마다 명령어 체계(이걸 ISA, 명령어 집합 구조라고 해요)가 완전히 다른데, 이걸 하나의 도구로 통합해서 다룰 수 있다는 게 큰 장점이에요.
둘째, 라이브러리 형태라는 점이에요. Capstone은 그 자체로 화려한 화면이 있는 프로그램이 아니에요. 다른 프로그램에 부품처럼 끼워 넣어 쓰는 엔진이거든요. 파이썬, C, Go, 자바 등 거의 모든 언어에서 불러다 쓸 수 있어서, 개발자가 자기만의 분석 도구를 만들 때 "번역 기능"은 Capstone에 맡기고 나머지에 집중할 수 있어요.
셋째, 풍부한 메타데이터예요. 단순히 "이 바이트는 mov다"라고만 알려주는 게 아니라, "이 명령어가 어떤 레지스터를 읽고 쓰는지", "분기(점프) 명령인지" 같은 부가 정보까지 구조화해서 줘요. 그래서 자동 분석 도구를 만들기 훨씬 편해요.
업계 맥락
우리가 아는 유명한 보안 도구들이 Capstone을 안에 품고 있어요. 동적 분석 프레임워크 radare2/rizin, 에뮬레이터 Unicorn, 익스플로잇 개발 도구 등이 대표적이에요. 사실 Capstone, Unicorn(CPU 에뮬레이터), Keystone(어셈블러)은 같은 개발자 계열이 만든 "삼총사"로 묶여서, 분석·실행·생성을 아우르는 생태계를 이뤄요.
상용 영역엔 IDA Pro나 Ghidra(미국 NSA가 공개한 무료 분석 도구) 같은 강력한 디스어셈블러가 있지만, Capstone은 "가볍고 어디든 끼워 넣을 수 있는 번역 엔진"이라는 자기 자리를 확고히 지키고 있어요.
한국 개발자에게 주는 시사점
보안·악성코드 분석을 공부하는 분이라면 Capstone은 거의 필수 교양이에요. 파이썬에서 pip install capstone 한 줄이면 바로 써볼 수 있어서 진입장벽도 낮아요. CTF(보안 경진대회)에서 바이너리 문제를 풀거나, 자동화된 분석 스크립트를 짤 때 정말 유용해요.
보안이 직업이 아니더라도, "내가 짠 고수준 코드가 결국 어떤 기계어로 변하는가"를 들여다보는 경험은 성능 최적화나 디버깅 실력을 한 단계 끌어올려 줘요. 컴파일러가 내 코드를 어떻게 번역하는지 직접 보는 거니까요.
마무리
Capstone은 화려하진 않지만, 수많은 보안 도구의 밑바닥을 받치는 "번역의 일꾼"이에요. 기계어와 사람 사이의 통역사라고 생각하면 딱 맞아요.
여러분은 실행 파일 속 기계어가 무슨 일을 하는지 직접 뜯어본 경험이 있나요? 어떤 도구로 시작해봤는지 궁금하네요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공