이 페이지 목차

코딩 에이전트와 함께하는 리버스 엔지니어링

소프트웨어가
어떻게 작동하는지 알아보세요

앱, 게임, 웹사이트에 대해 코딩 에이전트에게 질문해 보세요. REA는 답의 근거가 되는 코드를 살펴볼 도구를 제공합니다.

REA 설정

이 프롬프트를 코딩 에이전트에 붙여 넣으세요:

코딩 에이전트

npx rea-agents@latest setup을 사용해 REA를 설치하고 이 코딩 에이전트에 연결해 줘. 먼저 설정 변경 계획을 보여 주고 내 승인을 받은 뒤 실행해 줘. 마지막으로 설치를 확인해 줘.

터미널에서 직접 실행할 수도 있습니다:

npx rea-agents@latest setup

설정 변경 계획을 확인하고 승인한 뒤 에이전트를 다시 시작하세요.

다른 설치 방법: curl →

처음이거나 Node.js 또는 코딩 에이전트가 없나요? 단계별 설정 가이드를 따라보세요 →

작동 방식

리버스 엔지니어링은 프로그램 자체를 살펴보고 소프트웨어의 작동 방식을 이해하는 것입니다. REA를 사용하면 에이전트가 코드를 추적하고 기능을 설명하며 다시 구현하는 일을 도울 수 있습니다.

  1. 한 가지 기능 질문하기

    에이전트에게 프로그램이나 페이지와 질문을 전달하세요.

  2. 프로그램 살펴보기

    REA는 코드, 참조 관계, 실행 중 관찰 결과를 반환합니다.

  3. 이해한 뒤 변경해 보기

    에이전트는 조사 결과를 바탕으로 기능을 설명하거나 다시 구현합니다.

계산기 전체 조사 보기

계산기에서 200 + 10%의 결과가 220인 이유는 무엇일까요?

명령어를 단계별로 따라가기

원본 x64 · 선택한 명령어
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10

직접 명령어를 해석하고 호출을 추적해 계산을 재구성합니다.

에이전트에게 같은 질문하기

예제 프롬프트 · 계산기

REA로 Windows 계산기를 조사해 줘. 200 + 10%의 결과가 220인 이유는 뭐야?

분석 결과에 근거한 답변 예시

+ 다음에 %를 누르면 첫 번째 수의 백분율을 구합니다.

10% of 200 = 20200 + 20 = 220
REA가 제공하는 정보
핸들러의 명령어, 디컴파일 코드, 호출 정보.
에이전트가 설명하는 내용
어느 분기를 타는지, 무엇을 계산하며 어떻게 재현하는지.
설치된 계산기 DLL의 어셈블리 발췌입니다. 생각과 답변은 분석 결과를 설명하는 예시입니다. 계산기 예제로 이어가기 ↓

두 가지 예제를 해 봅시다. 게임의 속도를 바꾸고, 계산기의 % 버튼을 다시 구현합니다.

예제 01 · Chrome 공룡 게임

공룡은 왜 점점 빨라질까요?

계속 달리면 게임이 빨라집니다. 속도 조절 기능을 넣어 다시 구현하려면 먼저 속도가 어떻게 변하는지 알아야 합니다.

1. 속도에 대해 질문하기

질문 예시 · 공룡 게임

REA로 이 공룡 게임을 분석해 줘. 왜 점점 빨라지는지 속도 규칙을 보여주고, 속도를 조절할 수 있는 작은 버전을 만들어 줘.

2. 속도 규칙 찾기

REA를 사용하면 에이전트가 실행 중인 게임의 코드를 읽을 수 있습니다. 속도는 6에서 시작하고, 13 미만인 동안 갱신할 때마다 조금씩 증가합니다.

3. 결과물 플레이하기

아래 미니게임에 이 규칙을 구현하고 속도 슬라이더를 추가했습니다. 시작을 누르고 원하는 속도를 골라 보세요.

6 → 10 → 13

원래 규칙: 6에서 시작해 13을 향해 가속합니다.

슬라이더를 움직여 원하는 속도를 설정하세요. 스페이스 바나 점프 버튼을 누르면 선인장을 뛰어넘습니다.
속도 실험실 열기 →
스크립트, 검증, 직접 분석하는 방법 보기

분석 대상: wayou의 Chromium 기반 브라우저 버전.

REA · 로드 index.js · 선택한 라인
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}

속도는 6에서 시작합니다. 속도가 13 미만이고 충돌하지 않은 경우, 갱신할 때마다 0.001씩 더합니다.

각 부분이 하는 일

  1. 01 · REA실행 중인 게임의 스크립트 읽기실제 코드와 설정을 에이전트에 반환합니다.
  2. 02 · 코딩 에이전트규칙을 재현하고 조절 기능 추가하기복원한 가속 규칙을 속도 슬라이더가 있는 작은 게임에 적용합니다.
  3. 03 · 사용자속도를 바꾸고 플레이하기원래의 가속을 시험한 뒤 원하는 속도를 선택하세요.

REA는 로컬 디버깅 연결을 통해 HTTP 브라우저 버전을 검사하고, 소스와 다이제스트를 포함한 로드된 index.js를 반환했습니다.

분석한 스크립트의 주요 설정
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6

장애물과 자동 스케줄링을 비활성화한 통제된 브라우저 검사에서 원래 게임의 업데이트 함수를 호출했습니다. 4,000번 업데이트한 뒤 속도는 10.0이었고, 10,000번 업데이트한 뒤에는 13.0이었습니다. 두 값은 소수점 첫째 자리까지 반올림한 값입니다.

새 미니 게임은 이 속도 규칙을 유지합니다. 그리기, 점프, 충돌 판정은 교육용으로 간단히 구현했습니다. 실험실을 열어 새 코드를 보고 같은 속도 검사를 실행해 보세요.

직접 분석하려면 공룡 페이지로 브라우저 연결 절차를 따르세요. 에이전트에게 페이지 URL과 로컬 디버깅 엔드포인트를 알려준 뒤 위 프롬프트를 복사하세요.

분석한 속도 코드 · Chromium Authors · BSD 라이선스

예제 02 · Windows 계산기

계산기의 % 버튼을 재현해 봅니다

% 버튼은 + 뒤와 × 뒤에서 다르게 작동합니다. 두 규칙을 찾아 작은 계산기에서 시험해 봅시다.

1. % 버튼에 대해 질문하기

질문 예시 · 계산기

REA로 Windows 계산기의 % 버튼을 분석하세요. +와 × 연산 뒤에 적용되는 규칙을 복구하고, 두 규칙을 모두 사용하는 작은 계산기를 만드세요.

2. 두 규칙 찾기

REA는 에이전트가 % 버튼의 코드를 읽도록 돕습니다. 이 코드는 서로 다른 두 규칙을 적용합니다.

+ 다음에는
첫 번째 수의 10%를 구합니다.10% of 200 = 20 → 200 + 20 = 220
× 다음에는
10%를 0.1로 바꿉니다.200 × 0.1 = 20

3. % 버튼 시험하기

아래에 두 규칙을 다시 구현했습니다. + 또는 ×를 고르고, %를 누른 뒤 =를 누르세요.

200 + 20

200의 10% = 20. 따라서 200 + 20 = 220.

분석에서 확인한 백분율 규칙을 직접 조작해 보는 예제입니다.
실제 코드 및 답변 확인 방법 보기

이 예제에서는 previous = 200이며 current = 10입니다.

% 핸들러의 읽기 쉬운 요약
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}

설치된 앱에서 작동하는 % 버튼까지

  1. 01 · REA로 calc.exe 읽기계산기 앱을 실행합니다코드가 ms-calculator:을 엽니다. 에이전트는 이어서 설치된 앱의 라이브러리를 선택합니다.
  2. 02 · REA가 라이브러리를 읽음% 핸들러의 코드를 반환함수는 연산자를 확인하고 상수 100를 사용합니다.
  3. 03 · 코딩 에이전트의 해석규칙 설명과 재현분기를 Microsoft 소스 코드와 대조한 뒤, 위에서 +와 ×를 시험해 보세요.
REA · 선택한 원본 명령어
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
연산자 ID · Microsoft 소스 코드
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100

REA 4.1.0으로 분석한 대상: Windows 계산기 11.2508.4.0, x64. 읽기 쉬운 요약에서는 Microsoft 공개 소스의 이름을 사용해 복구한 분기를 설명합니다.

백분율 구현 · Microsoft 테스트 사례 · 네이티브 분석 설정 가이드

REA 사례 연구

출시된 앱이나 게임의 기능을 코드와 검증 결과와 함께 살펴보세요.

사례 소개 →

Android · APK 분석

인증 앱이 로그인 코드를 만드는 방법

Aegis의 배포 APK에서 여섯 자리 로그인 코드를 추적하고 데모 시계를 움직여 30초마다 바뀌는 이유를 확인하세요.

Android 사례 연구 읽기

Electron · 기능 추적

Notion이 텍스트와 HTML을 복사하는 방법

Notion에 패키징된 JavaScript에서 시스템 클립보드까지 추적하며 복사가 서식 있는 블록 데이터를 보존하는 방식을 살펴보세요.

Notion 사례 연구 읽기

네이티브 프로그램 · 재구현

DX-Ball의 사운드 패닝 계산

1996년 Windows 게임에서 공의 위치가 좌우 소리로 바뀌는 방식을 복원합니다.

DX-Ball 사례 연구 읽기

첫 번째 조사

작은 앱으로 REA를 써보세요

Notes 예제를 내려받아 CSV 내보내기를 추적하고, 입력 하나를 바꿔 검증해 보세요.

안내에 따라 예제 실행하기

조사 대상을 선택하세요

이 가이드는 소프트웨어 종류별 설정과 첫 조사를 안내합니다.

기계 코드 프로그램

실행 파일과 라이브러리의 함수, 문자열, 참조, 호출 관계를 살펴봅니다.

기계 코드 프로그램 분석 가이드

JavaScript & Electron

애플리케이션 폴더나 ASAR 아카이브에서 모듈, 라우트, IPC 및 네이티브 종속성의 구조를 파악합니다.

애플리케이션 워크플로

브라우저 및 런타임 활동

선택한 브라우저나 프로세스의 활동을 캡처하고 실행별 결과를 비교합니다.

브라우저 관찰 가이드
더 큰 프로젝트 시도하기
프롬프트 예 · 웹 사이트

REA로 https://rea.tools/을 분석해 줘. 이 웹사이트를 복제해 줘.

바로 이 사이트입니다.

예제 프롬프트 · 게임 재구성

REA로 이 게임을 실행 파일에서 재구현해 줘. 게임 플레이 로직을 C로 복원하고 원본과 비교해 테스트해 줘.

DX-Ball 사례 연구 보기 →

궁금한 점이 있나요?

상단