Hexana: JetBrains IDE용 WebAssembly·바이너리 분석 플러그인
Hexana는 JetBrains가 만든 WebAssembly·바이너리 분석 플러그인이다. 공식 문서 기준 IntelliJ IDEA 2025.2 이상과 VS Code에서 .wasm을 WAT·헥스·구조 뷰로 열어 임포트·크기·데드코드를 확인하고, MCP로 AI 어시스턴트와 연동한다.
목차
Hexana(헥사나)는 JetBrains가 개발 중인 WebAssembly·바이너리 분석 플러그인이다. JetBrains 공식 문서에 따르면 2026년 7월 기준 IntelliJ IDEA 2025.2 이상 계열 IDE와 VS Code 1.102 이상에서 설치해 컴파일된 .wasm 파일을 WAT·헥스·구조 뷰로 열어볼 수 있고, 아직 실험적 MVP 단계라 기능이 빠르게 바뀔 수 있다. 이 글은 개발자가 IDE를 벗어나지 않고 컴파일된 바이너리를 뜯어볼 때 Hexana가 무엇을 해 주는지, 어떻게 설치하고 무엇을 확인하는지를 다룬다. 특정 언어 툴체인 설정이나 Ghidra 같은 본격 리버스 엔지니어링 도구와의 세부 비교는 다루지 않는다.
Hexana가 겨냥하는 문제
WebAssembly(웹어셈블리, 줄여서 WASM)는 C·러스트·코틀린 같은 언어로 짠 코드를 브라우저와 서버에서 빠르게 실행하려고 만든 바이너리 명령 포맷이다. 소스를 컴파일하면 사람이 바로 읽기 어려운 .wasm 바이트 뭉치가 나온다. 번들 용량이 왜 커졌는지, 어떤 함수가 밖으로 노출됐는지, 호스트에서 무엇을 임포트하는지 확인하려면 별도 도구가 필요하다. 요즘은 WebAssembly 3.0에서 무엇이 바뀌었는지 챙겨야 할 만큼 브라우저 밖 쓰임이 넓어져, 이 확인 작업이 잦아졌다.
Hexana는 이 작업을 IDE 안으로 들여온다. JetBrains 공식 문서는 Hexana를 WebAssembly·바이너리 분석 툴킷으로 소개하며, 파서와 뷰어, 구조 분석을 하나의 플러그인으로 묶는다. 커맨드라인 도구를 따로 띄우지 않고 편집기에서 바로 .wasm을 열어 구조를 훑는 것이 핵심이다.
WAT·헥스·구조 뷰로 무엇을 보나
Hexana는 .wasm 파일 하나를 여러 뷰로 동시에 보여준다. JetBrains 공식 문서가 밝힌 세 축은 이렇다.
- WAT 뷰 — WAT(WebAssembly Text, wasm 바이너리를 사람이 읽게 옮긴 텍스트 표현)를 보여주는 편집형 뷰다. 문서는 행 단위 인라인 편집을 지원하는 가상 스크롤 WAT 뷰라고 설명한다.
- 헥스 뷰 — 바이트를 16진수로 나열하는 뷰로, 큰 바이너리도 버벅이지 않게 가상 스크롤로 그린다.
- 구조 뷰 — 임포트·익스포트와 함수·타입 카탈로그를 계층 트리로 정리한다. VS Code 확장은 이런 구조 분석 탭을 여러 개 띄운다.
구조 분석에는 실무에서 바로 쓸 지표가 붙는다. 크기 프로파일링은 어떤 함수·섹션이 용량을 차지하는지 짚고, 데드코드 감지는 실제로 호출되지 않는 코드를 표시한다. 제네릭 코드가 타입별로 복제되며 커진 부분(monomorphisation)을 분석하고, DWARF 디버그 정보가 담긴 커스텀 섹션도 열어 본다. 러스트나 코틀린으로 wasm을 뽑아 번들 용량을 줄이려는 사람에게 곧장 쓸모가 있다.
설치는 어떻게 하나
JetBrains IDE에서는 플러그인 마켓플레이스에서 바로 받는다. Settings/Preferences → Plugins → Marketplace 탭에서 Hexana를 검색해 설치한 뒤 IDE를 재시작하면 된다. JetBrains 공식 문서는 IntelliJ IDEA 2025.2 이상과 RustRover·WebStorm·CLion·PyCharm·Rider·PhpStorm에서 동작한다고 밝힌다.
VS Code 계열에서는 확장 마켓플레이스나 Open VSX에서 설치한다. 확장 ID가 JetBrains.hexana-wasm이라 명령줄로 한 번에 넣을 수도 있다.
code --install-extension JetBrains.hexana-wasm공식 문서 기준 VS Code 1.102 이상과 Cursor·VSCodium·Code OSS를 지원한다. 설치가 끝나면 프로젝트의 .wasm 파일을 여는 것만으로 뷰가 뜬다.
어떤 포맷과 WASM 기능을 지원하나
Hexana의 중심은 WebAssembly지만, JetBrains 공식 문서는 네이티브 실행 파일 포맷도 실험적으로 감지한다고 설명한다. 매직 바이트(파일 앞머리에 붙는 식별용 시그니처)로 포맷을 가려낸다.
| 포맷 | 주 사용 환경 | Hexana 지원 |
|---|---|---|
| WebAssembly(.wasm) | 브라우저·서버·엣지 런타임 | 정식(파서·WAT·구조) |
| ELF | 리눅스 실행·라이브러리 | 실험적(구조 뷰 포함) |
| Mach-O | macOS·iOS 실행 파일 | 실험적(매직 바이트 감지) |
| PE | 윈도우 .exe·.dll | 실험적 |
WASM 쪽 파서는 최신 제안(proposal)까지 폭넓게 읽는다. JetBrains 공식 문서가 밝힌 지원 범위는 다음과 같다.
- Core Wasm, Component Model
- GC(가비지 컬렉션), Reference Types
- SIMD, Threads, Tail Call
- Bulk Memory, Multi-Value, Legacy Exception Handling
Component Model을 감지하면 컴포넌트 사이의 의존 관계까지 풀어 준다.
wabt·twiggy 같은 CLI 도구와 무엇이 다른가
결론부터 말하면, 하는 일은 겹치지만 Hexana는 그 결과를 IDE 안에 붙인다. WABT의 wasm2wat는 wasm을 WAT 텍스트로 바꿔 주고, 러스트 WebAssembly 진영의 twiggy는 코드 크기를 프로파일링한다. 둘 다 터미널에서 파일을 넘겨 결과를 받는 방식이라 편집기와 창을 오가야 한다.
Hexana는 같은 정보를 편집기 탭으로 열고, 함수 이름을 눌러 구조를 오간다. 여기에 AI 연동이 붙는다. JetBrains 플러그인은 Hexana 도구를 담은 MCP(Model Context Protocol, AI 어시스턴트가 외부 도구를 호출하도록 잇는 표준) 서버를 함께 제공해, IDE의 AI 어시스턴트가 wasm 구조를 질의하게 한다. VS Code 확장은 MCP 서버를 필요할 때 내려받는다. JetBrains 플러그인은 WebAssembly.instantiate 호출의 반환 타입을 JavaScript·TypeScript에서 추론하는 기능도 넣었다.
언제 도입을 검토할 만한가
wasm을 자주 뽑아내는 프로젝트라면 시험 삼아 붙여 볼 만하다. 번들 용량을 줄이려 데드코드와 큰 함수를 찾거나, 어떤 임포트·익스포트가 걸려 있는지 확인하는 일이 IDE 안에서 끝난다. 반대로 안정성이 중요한 팀이라면 서두를 이유는 없다. JetBrains는 Hexana를 실험적 MVP로 규정하고, 일부 기능이 미완이거나 빠르게 바뀔 수 있다고 미리 밝혔다. 소스와 버전 계획은 GitHub 저장소에서 공개하고, 설치와 문서는 각각 JetBrains Marketplace와 공식 문서에서 확인한다. 도입 전에 지원 IDE 버전과 실험적 표기를 함께 살피는 편이 안전하다.