Android · APK 분석
인증 앱이 로그인 코드를 만드는 방법
Aegis의 배포 APK에서 여섯 자리 로그인 코드를 추적하고 데모 시계를 움직여 30초마다 바뀌는 이유를 확인하세요.
Android 사례 연구 읽기코딩 에이전트와 함께하는 리버스 엔지니어링
앱, 게임, 웹사이트에 대해 코딩 에이전트에게 질문해 보세요. REA는 답의 근거가 되는 코드를 살펴볼 도구를 제공합니다.
이 프롬프트를 코딩 에이전트에 붙여 넣으세요:
npx rea-agents@latest setup을 사용해 REA를 설치하고 이 코딩 에이전트에 연결해 줘. 먼저 설정 변경 계획을 보여 주고 내 승인을 받은 뒤 실행해 줘. 마지막으로 설치를 확인해 줘.
터미널에서 직접 실행할 수도 있습니다:
npx rea-agents@latest setup
설정 변경 계획을 확인하고 승인한 뒤 에이전트를 다시 시작하세요.
처음이거나 Node.js 또는 코딩 에이전트가 없나요? 단계별 설정 가이드를 따라보세요 →
리버스 엔지니어링은 프로그램 자체를 살펴보고 소프트웨어의 작동 방식을 이해하는 것입니다. REA를 사용하면 에이전트가 코드를 추적하고 기능을 설명하며 다시 구현하는 일을 도울 수 있습니다.
에이전트에게 프로그램이나 페이지와 질문을 전달하세요.
REA는 코드, 참조 관계, 실행 중 관찰 결과를 반환합니다.
에이전트는 조사 결과를 바탕으로 기능을 설명하거나 다시 구현합니다.
계산기에서 200 + 10%의 결과가 220인 이유는 무엇일까요?
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
두 가지 예제를 해 봅시다. 게임의 속도를 바꾸고, 계산기의 % 버튼을 다시 구현합니다.
예제 01 · Chrome 공룡 게임
계속 달리면 게임이 빨라집니다. 속도 조절 기능을 넣어 다시 구현하려면 먼저 속도가 어떻게 변하는지 알아야 합니다.
REA로 이 공룡 게임을 분석해 줘. 왜 점점 빨라지는지 속도 규칙을 보여주고, 속도를 조절할 수 있는 작은 버전을 만들어 줘.
REA를 사용하면 에이전트가 실행 중인 게임의 코드를 읽을 수 있습니다. 속도는 6에서 시작하고, 13 미만인 동안 갱신할 때마다 조금씩 증가합니다.
아래 미니게임에 이 규칙을 구현하고 속도 슬라이더를 추가했습니다. 시작을 누르고 원하는 속도를 골라 보세요.
원래 규칙: 6에서 시작해 13을 향해 가속합니다.
분석 대상: wayou의 Chromium 기반 브라우저 버전.
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
속도는 6에서 시작합니다. 속도가 13 미만이고 충돌하지 않은 경우, 갱신할 때마다 0.001씩 더합니다.
각 부분이 하는 일
REA는 로컬 디버깅 연결을 통해 HTTP 브라우저 버전을 검사하고, 소스와 다이제스트를 포함한 로드된 index.js를 반환했습니다.
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
장애물과 자동 스케줄링을 비활성화한 통제된 브라우저 검사에서 원래 게임의 업데이트 함수를 호출했습니다. 4,000번 업데이트한 뒤 속도는 10.0이었고, 10,000번 업데이트한 뒤에는 13.0이었습니다. 두 값은 소수점 첫째 자리까지 반올림한 값입니다.
새 미니 게임은 이 속도 규칙을 유지합니다. 그리기, 점프, 충돌 판정은 교육용으로 간단히 구현했습니다. 실험실을 열어 새 코드를 보고 같은 속도 검사를 실행해 보세요.
직접 분석하려면 공룡 페이지로 브라우저 연결 절차를 따르세요. 에이전트에게 페이지 URL과 로컬 디버깅 엔드포인트를 알려준 뒤 위 프롬프트를 복사하세요.
예제 02 · Windows 계산기
% 버튼은 + 뒤와 × 뒤에서 다르게 작동합니다. 두 규칙을 찾아 작은 계산기에서 시험해 봅시다.
REA로 Windows 계산기의 % 버튼을 분석하세요. +와 × 연산 뒤에 적용되는 규칙을 복구하고, 두 규칙을 모두 사용하는 작은 계산기를 만드세요.
REA는 에이전트가 % 버튼의 코드를 읽도록 돕습니다. 이 코드는 서로 다른 두 규칙을 적용합니다.
10% of 200 = 20 → 200 + 20 = 220
200 × 0.1 = 20
아래에 두 규칙을 다시 구현했습니다. + 또는 ×를 고르고, %를 누른 뒤 =를 누르세요.
200의 10% = 20. 따라서 200 + 20 = 220.
이 예제에서는 previous = 200이며 current = 10입니다.
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}
설치된 앱에서 작동하는 % 버튼까지
ms-calculator:을 엽니다. 에이전트는 이어서 설치된 앱의 라이브러리를 선택합니다.
100를 사용합니다.
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
#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 공개 소스의 이름을 사용해 복구한 분기를 설명합니다.
출시된 앱이나 게임의 기능을 코드와 검증 결과와 함께 살펴보세요.
Android · APK 분석
Aegis의 배포 APK에서 여섯 자리 로그인 코드를 추적하고 데모 시계를 움직여 30초마다 바뀌는 이유를 확인하세요.
Android 사례 연구 읽기Electron · 기능 추적
Notion에 패키징된 JavaScript에서 시스템 클립보드까지 추적하며 복사가 서식 있는 블록 데이터를 보존하는 방식을 살펴보세요.
Notion 사례 연구 읽기네이티브 프로그램 · 재구현
1996년 Windows 게임에서 공의 위치가 좌우 소리로 바뀌는 방식을 복원합니다.
DX-Ball 사례 연구 읽기첫 번째 조사
Notes 예제를 내려받아 CSV 내보내기를 추적하고, 입력 하나를 바꿔 검증해 보세요.
이 가이드는 소프트웨어 종류별 설정과 첫 조사를 안내합니다.
REA로 https://rea.tools/을 분석해 줘. 이 웹사이트를 복제해 줘.
바로 이 사이트입니다.
REA로 이 게임을 실행 파일에서 재구현해 줘. 게임 플레이 로직을 C로 복원하고 원본과 비교해 테스트해 줘.