---
title: 첫 리버스 엔지니어링 조사 — REA
url: https://rea.tools/ko/first-investigation/
---

[홈](https://rea.tools/ko/) / 첫 번째 조사

# 내보낸 메모가 어디로 가는지 알아보세요

REA로 작은 앱을 살펴보고 메모 내보내기 버튼의 동작을 추적한 뒤, 한 가지를 직접 검증해 보세요.

제공된 예제 · Node.js과 npm · 코딩 에이전트

## 1. 에이전트에 REA 연결하기

Claude Code, Codex, Cursor 같은 코딩 에이전트를 사용하세요. Node.js와 npm이 필요합니다. [설치 가이드에 지원 버전이 나와 있습니다](https://rea.tools/get-started/).

코딩 에이전트

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

또는 터미널에서 이 명령을 실행하세요:

`npx rea-agents@latest setup`

계획을 검토하고 설정을 승인한 뒤 에이전트를 다시 시작하세요. 이미 연결했다면 아래로 진행하세요.

## 2. CSV 저장 위치 묻기

예제는 **메모 내보내기** 버튼이 있는 6개 파일로 구성된 Electron 앱입니다. Electron을 설치하거나 실행하지 않아도 에이전트가 코드를 분석할 수 있습니다.

코딩 에이전트

https://rea.tools/examples/notes-example.zip을 새 예제 폴더에 다운로드하고 압축을 풀어 줘. REA로 Export notes를 클릭할 때 어떤 일이 일어나는지 조사해 줘. notes.csv가 기록되는 위치, 포함된 필드, 관련 파일과 줄을 보여 줘.

에이전트가 파일을 다운로드하고 압축을 푼 폴더를 REA에 전달해 분석합니다.

[예제 ZIP 다운로드](https://rea.tools/examples/notes-example.zip)

에이전트가 다운로드할 수 없다면 직접 압축을 푸세요. `notes-example` 폴더의 경로와 같은 내보내기 질문을 에이전트에게 전달하세요.

## 3. 답변의 근거를 코드에서 확인하기

파일과 줄 번호를 포함한 짧은 설명을 확인하세요:

> 버튼은 `notes:export` 메시지를 보냅니다. 메인 프로세스는 메모를 CSV로 변환한 뒤 사용자의 다운로드 폴더에 `notes.csv` 파일을 저장합니다. 열은 `id`와 `title`입니다.

버튼에서 파일 저장 코드까지

1. 페이지 · renderer.js

   노트 내보내기

   `notes.exportCsv()`을 호출합니다.
2. 브리지 · preload.js

   `notes:export`

   메인 프로세스에 이름 있는 메시지를 보냅니다.
3. 핸들러 · main.js

   notes.csv 저장

   `csv.js`의 포맷터를 호출하고 파일을 저장합니다.

REA의 정적 분석은 메시지와 핸들러를 연결합니다. 저장 위치는 코드에서 확인합니다.

main.js · 라인 8-12[소스 코드](https://rea.tools/examples/notes-electron/main.js)

```
ipcMain.handle("notes:export", () => {
  const destination = path.join(app.getPath("downloads"), "notes.csv");
  writeFileSync(destination, toCsv(notes), "utf8");
  return destination;
});
```

이 핸들러에 파일 경로, 포맷터, 쓰기 호출이 함께 있습니다. 답변에 빠져 있다면 에이전트에게 해당 코드를 보여 달라고 하세요.

[전체 코드 추적과 기록된 REA 결과 보기](https://rea.tools/guides/javascript/#follow).

## 4. 예측 확인

CSV는 쉼표로 열을 구분합니다. 메모 제목에 쉼표나 따옴표가 들어 있으면 어떻게 될까요?

코딩 에이전트

ID가 1이고 제목이 Hello, "REA"인 메모의 CSV 출력을 예측해 줘. 그런 다음 Node.js로 예제의 toCsv 포맷터를 실행해 확인해 줘. 예측과 실제 출력을 보여 줘.

예상 포맷터 출력

```
id,title
1,"Hello, ""REA"""
```

제목은 따옴표로 감싼 필드 하나에 남고, 내부 따옴표는 두 번씩 표시됩니다. Node.js로 포맷터를 직접 검증합니다.

직접 검증하기

압축을 푼 `notes-example` 폴더에서 터미널을 여세요:

macOS / Linux · Bash / Zsh

```
node <<'JS'
const { toCsv } = require('./csv.js');
process.stdout.write(toCsv([{ id: 1, title: 'Hello, "REA"' }]));
JS
```

Windows · PowerShell

```
@'
const { toCsv } = require('./csv.js');
process.stdout.write(toCsv([{ id: 1, title: 'Hello, "REA"' }]));
'@ | node
```

## 5. 추가 질문하기

같은 대화에서 다음 질문을 해보세요:

> 파일을 저장할 수 없으면 어떻게 돼? 오류가 페이지에 전달되는 과정을 추적해 줘.

또는 직접 고른 앱을 에이전트에게 주고 버튼, 파일, 동작 중 하나를 물어보세요.

- [Notion이 텍스트와 HTML을 복사하는 방법](https://rea.tools/ko/showcase/notion/)패키징된 Electron 앱의 클립보드 기능을 추적합니다.
- [DX-Ball이 사운드 패닝을 계산하는 방법](https://rea.tools/ko/showcase/dx-ball/)원본 명령어와 재구성판의 검증 과정을 살펴보세요.
- [설정 또는 분석 문제 해결](https://rea.tools/ko/faq/#troubleshooting)문제가 생기면 REA를 업데이트하고 연결을 확인하세요.
