---
title: 'REA: 코딩 에이전트를 위한 리버스 엔지니어링'
url: https://rea.tools/ko/
---

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

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

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

[시작하기](https://rea.tools/get-started/)
[예제 보기 ↓](https://rea.tools/ko/#dinosaur)

## REA 설정

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

코딩 에이전트

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

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

`npx rea-agents@latest setup`

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


설정 옵션


다른 설치 방법: [curl →](https://rea.tools/get-started/#curl-installation)

처음이거나 Node.js 또는 코딩 에이전트가 없나요? [단계별 설정 가이드를 따라보세요 →](https://rea.tools/get-started/)

[RL 환경 만들기 →](https://rea.tools/ko/#rl-environments)

웹 앱을 기록해 에이전트 학습과 테스트에 사용하세요.

[사례 소개 →](https://rea.tools/ko/showcase/)

분석 과정과 직접 조작하는 데모.

[블로그 →](https://rea.tools/ko/blog/)

방법론과 소프트웨어 재구성 기록.

## 작동 방식

리버스 엔지니어링은 프로그램 자체를 살펴보고 소프트웨어의 작동 방식을 이해하는 것입니다. 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
```



01 · 어떤 분기인가요?

“**0x5b? 0x5c?** 두 점프가 같은 위치로 향합니다. 이들은 어떤 연산자일까요?”

명령 ID를 찾아 분기가 뜻하는 연산을 표시합니다.

0x5b
:   나누기 ÷

0x5c
:   곱하기 ×

02 · 호출된 함수는 무엇을 하나요?

“100은 분명합니다. 호출은 주소로만 표시되어 있습니다. **어느 함수가 나눗셈을 할까요? 어떤 값이 입력될까요?**”

보조 함수를 살펴보고 저장된 값을 추적합니다.

0x64
:   100

…123190
:   나누기

03 · 규칙은 무엇입니까?

“이 경로는 다른 입력값을 곱하네. 그러니 + 다음의 **10%는 200의 10%를 뜻하는구나.**”

피연산자에 이름을 붙이고 두 연산자의 경로를 모두 확인합니다.

200 × 10 / 100
**20**

![](https://rea.tools/assets/localized/ko/figures/analyst-thinking.svg)

전문가의 추론 예시

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

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

예제 프롬프트 · 계산기

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

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

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

`10% of 200 = 20`**200 + 20 = 220**

REA가 제공하는 정보
:   핸들러의 명령어, 디컴파일 코드, 호출 정보.

에이전트가 설명하는 내용
:   어느 분기를 타는지, 무엇을 계산하며 어떻게 재현하는지.

설치된 계산기 DLL의 어셈블리 발췌입니다. 생각과 답변은 분석 결과를 설명하는 예시입니다. [계산기 예제로 이어가기 ↓](https://rea.tools/ko/#calculator)

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

예제 01 · Chrome 공룡 게임

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

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

### 1. 속도에 대해 질문하기

질문 예시 · 공룡 게임

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

### 2. 속도 규칙 찾기

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

### 3. 결과물 플레이하기

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

속도 6.0
 복구된 가속 규칙 사용

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

슬라이더를 움직여 원하는 속도를 설정하세요. 스페이스 바나 점프 버튼을 누르면 선인장을 뛰어넘습니다.



플레이하려면 JavaScript를 켜세요. 규칙을 읽고 아래 소스 코드를 펼치는 것은 계속 가능합니다.

[속도 실험실 열기 →](https://rea.tools/ko/examples/dino-lab/)

스크립트, 검증, 직접 분석하는 방법 보기

분석 대상: [wayou의 Chromium 기반 브라우저 버전](https://wayou.github.io/t-rex-runner/).

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이었습니다. 두 값은 소수점 첫째 자리까지 반올림한 값입니다.

새 미니 게임은 이 속도 규칙을 유지합니다. 그리기, 점프, 충돌 판정은 교육용으로 간단히 구현했습니다. [실험실을 열어](https://rea.tools/ko/examples/dino-lab/) 새 코드를 보고 같은 속도 검사를 실행해 보세요.

직접 분석하려면 [공룡 페이지](https://wayou.github.io/t-rex-runner/)로 [브라우저 연결 절차](https://rea.tools/ko/guides/browser/#prepare)를 따르세요. 에이전트에게 페이지 URL과 로컬 디버깅 엔드포인트를 알려준 뒤 위 프롬프트를 복사하세요.

[분석한 속도 코드](https://github.com/wayou/t-rex-runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571) · [Chromium Authors · BSD 라이선스](https://rea.tools/assets/licenses/dinosaur.txt)

예제 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 공개 소스의 이름을 사용해 복구한 분기를 설명합니다.

[백분율 구현](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111) · [Microsoft 테스트 사례](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370) · [네이티브 분석 설정 가이드](https://rea.tools/guides/native/)

## REA 사례 연구

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

[사례 소개 →](https://rea.tools/ko/showcase/)

Android · APK 분석

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

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

[Android 사례 연구 읽기](https://rea.tools/showcase/aegis/)

Electron · 기능 추적

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

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

[Notion 사례 연구 읽기](https://rea.tools/ko/showcase/notion/)

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

### DX-Ball의 사운드 패닝 계산

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

[DX-Ball 사례 연구 읽기](https://rea.tools/ko/showcase/dx-ball/)

## RL 환경 만들기

기록한 웹 앱 세션을 AI 에이전트 학습과 테스트를 위한 실행 가능한 환경으로 만드세요.

에이전트가 브라우저의 요청과 앱의 응답을 기록합니다. REA는 이 데이터로 로컬 환경을 만들어, 원래 앱을 실행하지 않고도 에이전트가 작업을 연습할 수 있게 합니다.

폴더 삭제를 지원하려면 기록에 삭제 전 폴더가 포함되어야 하며, 삭제 후에는 폴더가 없다는 사실을 확인할 수 있어야 합니다.

[환경 만들기 가이드](https://rea.tools/guides/rl-environments/) · [X에서 데모 보기](https://x.com/reatools/status/2112574822584918075?s=20)

에이전트에 REA를 설정한 뒤 아래 예시 URL과 폴더 작업을 자신의 환경에 맞게 바꾸세요.

코딩 에이전트

REA를 사용해 다음 테스트 웹 앱에서 RL 환경을 만들어 주세요. `http://127.0.0.1:3000` 폴더 목록 조회, 생성, 이름 변경, 삭제를 포함해 주세요. 테스트 폴더를 만들고 삭제해도 됩니다. 기존 데이터는 변경하지 마세요. `my-env`라는 폴더에 저장하고, 사용 가능한 작업을 확인한 뒤 실행 방법을 알려 주세요.

프롬프트 예시입니다. URL과 폴더 작업을 자신의 앱에 맞게 바꾸세요.

첫 번째 조사

## 작은 앱으로 REA를 써보세요

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

[안내에 따라 예제 실행하기](https://rea.tools/ko/first-investigation/)

## 조사 대상을 선택하세요

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

### 기계 코드 프로그램

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

[기계 코드 프로그램 분석 가이드](https://rea.tools/guides/native/)

### JavaScript & Electron

JavaScript 데스크톱 앱 내부의 코드를 따라가 보세요.

[애플리케이션 워크플로](https://rea.tools/guides/javascript/)

### 브라우저 및 런타임 활동

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

[브라우저 관찰 가이드](https://rea.tools/ko/guides/browser/)

더 큰 프로젝트 시도하기

프롬프트 예 · 웹 사이트

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

바로 이 사이트입니다.

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

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

[DX-Ball 사례 연구 보기 →](https://rea.tools/ko/showcase/dx-ball/)

## 궁금한 점이 있나요?

설정 도움말과 자주 묻는 질문은 [FAQ](https://rea.tools/ko/faq/)에서 확인하세요.

[Discord에 참여](https://discord.gg/GkcryMnJDM)해 도움을 받고 분석 내용을 이야기하세요.

[GitHub Issues](https://github.com/morluto/rea/issues/new/choose)에서 버그를 신고하거나 기능을 요청하세요.
