윈도우 계산기에서 200에 10%를 더하면 왜 220이 나올까. 이 단순해 보이는 질문에 답하려면 원래는 디스어셈블러를 켜고 명령어를 하나하나 추적하는 리버스 엔지니어링 작업이 필요하다. 최근 공개된 REA(Reverse – Engineer Anything)는 이런 작업을 코딩 에이전트(AI 코딩 어시스턴트)에게 맡길 수 있게 해주는 도구로, 사람이 직접 역어셈블 코드를 읽는 대신 에이전트가 프로그램을 조사하고 그 결과를 자연어로 설명하도록 설계됐다.
REA는 무엇을 하는 도구인가
REA는 자체적으로 분석을 수행하는 프로그램이 아니라, 코딩 에이전트에게 프로그램을 들여다볼 수 있는 도구(tool)를 제공하는 레이어에 가깝다. 공식 사이트 설명에 따르면 설치는 npx rea-agents@latest setup 명령으로 시작하며, 에이전트가 설치 계획을 세우면 사용자가 이를 승인하고 에이전트를 재시작하는 방식으로 연동된다.
리버스 엔지니어링의 목표를 원문은 “기능을 설명할 수 있을 만큼, 바꿀 수 있을 만큼, 다시 만들 수 있을 만큼 이해하는 것”이라고 정의한다. REA는 이 과정에서 사람이 하던 역할, 즉 명령어 ID를 찾아보고 분기점에 이름을 붙이고 호출되는 주소를 추적해 어떤 값이 어디로 들어가는지 재구성하는 작업을 에이전트가 대신 수행하도록 돕는다.
윈도우 계산기 사례로 본 작동 방식
원문이 제시한 대표 예시는 윈도우 계산기의 퍼센트(%) 버튼이다. 분석 전 과정은 사람이 직접 0x5b, 0x5c 같은 명령어 주소를 확인하고 두 분기가 같은 지점으로 이어지는 이유를 추적하는 식으로 진행된다. 반면 REA를 쓰면 사용자는 에이전트에게 “REA로 윈도우 계산기를 조사해서 200+10%가 왜 220이 되는지 알려줘”라고 요청하기만 하면 된다.
분석 결과 에이전트는 더하기(+) 연산 뒤에 퍼센트 버튼을 누르면 첫 번째 입력값(200)에 대한 비율로 퍼센트가 계산된다는 규칙을 찾아냈다. 원문에 따르면 한쪽 분기는 100으로 나누고, 다른 쪽 분기는 첫 번째 숫자를 곱하는 연산을 수행하는 것으로 확인됐다. 이 사례는 REA 4.1.0 버전, 윈도우 계산기 11.2508.4.0(x64)에서 분석된 것으로 명시되어 있다.
브라우저 기반 게임 분석과 재구현
REA는 설치된 네이티브 애플리케이션뿐 아니라 브라우저에서 실행되는 코드도 분석 대상으로 삼는다. 원문은 공룡 점프 게임(크로미움 기반 브라우저의 오프라인 게임)을 예로 들어, 로컬 디버깅 연결을 통해 실제 실행 중인 index.js 소스와 다이제스트를 가져온 과정을 설명한다.
장애물과 자동 스케줄링을 끈 통제된 환경에서 원본 게임의 업데이트 함수를 직접 호출해 테스트한 결과, 업데이트 4,000회 시점에 속도가 10.0, 10,000회 시점에 13.0으로 수렴하는 규칙을 확인했다고 밝히고 있다. 구체적으로는 시작 속도 6에서 충돌 없이 매 업데이트마다 0.001씩 증가하되 13을 넘지 않는 규칙이다. 에이전트는 이 규칙만 추출해 그리기·충돌 처리 등은 새로 작성한 축소판 미니게임을 만들어 보여준다.
기존 리버스 엔지니어링 도구와의 차이
IDA Pro, Ghidra, Frida 같은 기존 리버스 엔지니어링 도구들은 강력하지만 사용자가 어셈블리어와 디버깅 지식을 직접 갖추고 조작해야 한다는 진입장벽이 있다. REA의 접근 방식은 이런 도구들을 대체한다기보다, 코딩 에이전트가 그 도구들을 호출하고 결과를 해석해 사람이 읽을 수 있는 설명으로 정리해주는 중간 계층을 자처한다는 점이 다르다. 원문에서도 “이미 리버싱을 안다면 분석 가이드로 바로 건너뛰라”는 안내가 있어, 숙련자에게는 작업 속도를 높이는 보조 도구로, 비전문가에게는 진입장벽을 낮추는 도구로 포지셔닝하고 있는 것으로 보인다.
한국 개발자가 참고할 점
REA는 npx로 설치하는 구조라 Node.js 환경만 갖추면 접근 장벽이 낮다. 다만 원문에서 소개된 사례들은 윈도우 계산기나 브라우저 게임처럼 비교적 단순하고 독립적인 로직을 대상으로 한 것이어서, 복잡한 상용 소프트웨어나 난독화·보호 기법이 적용된 바이너리에도 동일한 수준으로 작동할지는 원문만으로는 확인하기 어렵다. 이 부분은 추측이지만 상용 소프트웨어의 역공학은 라이선스나 법적 문제와도 얽힐 수 있으므로, 실제 업무에 활용하기 전에는 분석 대상 소프트웨어의 이용 약관과 저작권 문제를 함께 검토할 필요가 있다.
또한 에이전트가 생성한 분석 결과와 재구현 코드를 그대로 신뢰하기보다는, 원문이 보여준 것처럼 실제 함수를 호출해 수치를 검증하는 과정(예: 속도 값이 실제로 10.0, 13.0에 수렴하는지 확인)을 거치는 습관이 필요해 보인다. 보안 연구, 레거시 코드 분석, 게임 모딩 등 리버스 엔지니어링이 필요한 국내 개발자들에게는 작업 시간을 단축할 수 있는 흥미로운 시도로 지켜볼 만하다.

답글 남기기