소프트웨어가 왜 그렇게 동작하는지 알고 싶을 때, 가장 확실한 방법은 프로그램 자체를 들여다보는 것이다. 문서나 추측이 아니라 실제로 실행되는 코드와 명령을 따라가며 기능을 재구성하는 작업, 즉 리버스 엔지니어링이다. 하지만 이 작업은 디스어셈블리를 읽고 호출 관계를 추적하며 계산 과정을 복원하는 전문 지식을 요구해 왔다. REA(Reverse Engineer Anything)는 이 과정을 코딩 에이전트에게 맡기자는 발상에서 출발한 도구다. 공식 사이트(rea.tools)의 설명에 따르면 REA는 에이전트에게 프로그램을 들여다보고 그 동작을 설명하게 하는 도구 모음을 제공한다.
설치는 npx rea-agents@latest setup 명령으로 이뤄지며, 에이전트에게 설치 계획을 먼저 보여 주고 승인을 받은 뒤 검증하고 재시작하는 흐름을 권장한다. 즉 사람이 바이너리 분석 도구를 직접 다루는 대신, 분석 대상과 질문을 에이전트에게 지시하면 에이전트가 REA를 호출해 조사 결과와 읽기 쉬운 요약을 돌려주는 구조다.
세 가지 대표 사례
소개 자료가 드는 첫 사례는 윈도우 계산기다. '200 + 10%'를 입력하면 왜 결과가 220이 나오는지를 에이전트가 REA로 조사한다. 답은 더하기 연산 뒤에 누른 % 버튼이 첫 번째 숫자를 기준으로 백분율을 계산하기 때문이다. 자료는 여기서 한발 더 나아가 더하기와 곱하기 연산 각각의 % 처리 규칙을 복원하는 예를 든다. 한쪽 분기는 값을 100으로 나누고, 다른 분기는 거기에 첫 번째 숫자를 곱한다. 에이전트는 이 두 규칙을 이용해 같은 동작을 하는 작은 계산기를 새로 만든다. 이때 분석 대상은 REA 4.1.0으로 조사한 윈도우 계산기 11.2508.4.0 x64 버전이며, 요약은 마이크로소프트가 공개한 소스의 명칭을 빌려 복원된 분기를 설명한다.
두 번째 사례는 크롬의 오프라인 공룡 게임이다. 게임은 왜 점점 빨라지는가. REA는 로컬 디버깅 연결을 통해 브라우저 버전을 들여다보고 실제로 로드된 index.js를 그 소스와 다이제스트까지 함께 가져온다. 복원된 규칙은 속도 6에서 시작해 충돌이 없을 때마다 업데이트당 0.001씩 더하되 속도가 13에 도달할 때까지만 증가시키는 것이다. 장애물과 자동 스케줄링을 끈 통제된 환경에서 원본의 업데이트 함수를 호출해 보니 4,000회 뒤 속도는 10.0, 10,000회 뒤에는 13.0(소수점 한 자리 반올림)이 나왔다. 이렇게 복원한 속도 규칙을 그대로 쓰되 그리기·점프·충돌 코드는 교육용으로 간단히 구현한 미니 게임을 만들어 같은 속도 검증을 돌려볼 수 있다.
실무에서 의미하는 것
REA가 다루는 대상은 세 갈래다. 실행 파일과 라이브러리에서는 함수, 문자열, 참조, 호출 관계를 조사하고, 애플리케이션 폴더나 ASAR 아카이브에서는 모듈·라우트·IPC·네이티브 의존성을 지도화한다. 그리고 선택한 브라우저나 프로세스의 활동을 캡처해 실행 간 결과를 비교할 수도 있다. 분석 대상 선택에 따라 설치와 분석 절차가 달라지는 셈이다. 자료는 이 역량을 웹사이트 복제나 실행 파일에서 게임플레이 로직을 C로 복원해 원본과 비교 검증하는 작업으로까지 확장할 수 있다고 소개한다.
실무자 관점에서 이 접근의 가치는 분명하다. 그동안 리버스 엔지니어링은 진입 장벽이 높은 전문 영역이었지만, 에이전트가 도구 호출과 디스어셈블리 해석을 대신해 주면 '이 기능이 내부적으로 어떻게 동작하는가'라는 질문에 훨씬 빠르게 답할 수 있다. 경쟁 제품의 동작 이해, 레거시 바이너리의 로직 복원, 문서 없는 포맷의 해석 같은 상황에서 특히 쓸모가 있다. 공개 소스가 있는 대상에서는 복원 결과를 공식 명칭과 테스트 케이스에 대조해 설명의 신뢰도를 높인다는 점도 눈여겨볼 만하다.
남는 질문들
다만 공개된 정보는 제품 측이 고른 예시 위주이고, 성공 사례가 계산기와 게임처럼 비교적 규모가 작고 결과를 검증하기 쉬운 대상이라는 한계가 있다. 난독화가 심한 상용 바이너리나 대규모 네이티브 코드에서 얼마나 정확하고 완전하게 로직을 복원하는지, 에이전트가 내놓은 설명이 틀렸을 때 어떻게 걸러내는지는 자료만으로는 판단하기 어렵다. 더 근본적으로는 타인의 소프트웨어를 리버스 엔지니어링하는 일이 라이선스와 법적 제약에 걸릴 수 있다는 점을 늘 염두에 두어야 한다. REA는 FAQ와 디스코드, 깃허브 이슈를 통해 지원을 받을 수 있으니, 도입을 고려한다면 작은 대상으로 복원 정확도와 검증 흐름을 직접 확인해 보는 편이 안전하다.