
요즘 주니어 개발자들 이력서를 검토하다 보면 한숨부터 나옵니다. 죄다 "Next.js로 블로그 만들기", "Spring Boot로 게시판 만들기" 같은 클론 코딩뿐입니다. 남들이 다 쓰는 프레임워크가 추상화해 둔 편안한 세상에 안주하며, 정작 그 밑단에서 무슨 일이 일어나는지 전혀 궁금해하지 않습니다. 솔직히 말해서, JSON 응답이 안 오고 바이너리 데이터가 툭 떨어지면 당황해서 "API가 이상해요"라고 징징거릴 분들, 꽤 많지 않나요? 오늘은 2025년에 2006년산 닌텐도 Wii의 뉴스 채널을 해킹해서 지역 뉴스를 띄운 한 괴짜 개발자의 이야기를 해보려 합니다. "게임기 해킹이 나랑 무슨 상관이냐"고 묻는다면, 당신은 이미 도태되고 있는 겁니다.
이 프로젝트의 시작은 단순합니다. 닌텐도가 10년도 더 전에 서비스를 종료한 Wii 뉴스 채널에, 최신 지역 뉴스를 띄우겠다는 겁니다. 보통의 '요즘 개발자'라면 닌텐도 API 문서부터 찾았겠죠. 하지만 문서는 없습니다. 서버도 죽었습니다. 여기서 진짜 엔지니어링이 시작됩니다. 개발자는 mitmproxy를 띄우고 Wii가 보내는 HTTP 요청을 가로챘습니다. 트래픽을 보니 http://news.wapp.wii.com/v2/1/049/news.bin.00이라는 URL로 요청을 보내더군요. 여기서 1은 언어 설정, 049는 국가 코드였습니다.
중요한 건 그다음입니다. 응답으로 내려오는 건 예쁘게 포장된 JSON이 아니라, 알 수 없는 바이너리 덩어리(news.bin)였습니다. LG CNS 시절, 금융 망 연계 작업을 할 때가 생각나더군요. 문서도 없는 레거시 시스템이 뱉어내는 전문(Message)을 1바이트씩 뜯어보며 명세서를 역으로 만들어내던 그 지옥 같던 밤샘들 말입니다. 이 개발자도 똑같습니다. wadlib이라는 Go 라이브러리를 사용해 WAD(Wii Application Distribution) 파일 구조를 파헤치고, 그 안에 숨겨진 0000000b.app 파일을 찾아냈습니다. 이게 바로 뉴스 채널의 실행 바이너리였죠.

단순히 분석만 하고 끝냈다면 제가 이 글을 쓰지도 않았습니다. 그는 문제를 해결하기 위해 '방어적'이면서도 '공격적'인 접근을 했습니다. 실행 파일 내에 하드코딩된 닌텐도의 죽은 URL을 헥스 에디팅으로 수정해 자신의 S3 버킷을 바라보게 만들었습니다. 그리고 AWS Lambda와 EventBridge를 연동해 매시간 최신 뉴스를 긁어와(Scraping) Wii가 이해할 수 있는 바이너리 포맷으로 변환해 S3에 업로드하는 파이프라인까지 구축했습니다. 이게 바로 시스템 장악입니다. 프레임워크가 떠먹여 주는 기능만 쓰는 게 아니라, 바이트 단위로 데이터를 통제하고 클라우드 인프라로 자동화까지 해내는 능력 말입니다.
많은 개발자가 "레거시는 똥"이라고 말합니다. 하지만 그 레거시를 분석하고 내 입맛대로 제어할 수 있는 능력이야말로 시니어와 주니어를 가르는 기준점입니다. 이 개발자가 사용한 기술 스택을 보세요. Go, AWS Lambda, 리버스 엔지니어링, 네트워크 패킷 분석. 이력서에 'MSA 경험 있음' 한 줄 적는 것보다, 죽어버린 게임기 네트워크를 살려낸 이 경험이 백 배는 더 가치 있습니다. 전자는 누구나 학원에서 배우지만, 후자는 문제 해결 능력이 없으면 절대 불가능하기 때문입니다.

여러분이 지금 작성하는 코드를 돌아보세요. 라이브러리 오류가 나면 스택오버플로우 복사 붙여넣기만 하고 있진 않나요? npm install 없이는 아무것도 못 하는 상태는 아닌가요? 기술의 본질은 도구의 사용법이 아니라, 데이터가 흐르는 원리를 이해하는 데 있습니다. 2006년산 게임기를 뜯어보는 이 프로젝트가 우스워 보인다면, 3년 뒤 여러분의 자리는 AI가 대체하고 있을 겁니다. 부디 겉멋 든 기술 이름 뒤에 숨지 말고, HTTP 헤더와 바디부터 뜯어보는 야생성을 기르시길 바랍니다. 그래야 살아남습니다.


