CJK Workbench
워크플로

실전 리버스 엔지니어링, 함수 하나씩

03
시나리오

실전 분석을 시작하는 방법

직접 컴파일한 C 프로그램에서 작은 함수 하나를 골라 첫 명령어부터 마지막 return까지 살펴보세요. 법과 라이선스 조건은 국가마다 다르니 내 코드나 연습 파일만 쓰세요. 네 단계는 아래와 같아요.

01

프로젝트 폴더 열기

C 소스, 컴파일된 파일의 사본, 나중에 내보낼 리스팅을 담을 작업 폴더를 고르세요.

02

텍스트 리스팅 내보내기

Shell이 디스어셈블러의 내보내기 명령을 사본에 실행하게 하거나 리스팅을 직접 저장해서 결과가 텍스트 파일이 되게 하세요.

03

설명 요청하기

에이전트에게 리스팅을 읽고 함수를 한 줄씩 설명해 달라고 한 뒤, 메모를 write_file로 저장하세요.

04

답 확인하기

메모를 소스 및 리스팅과 비교하고, Ask first에서 diff를 읽고, 합법적이라면 랩에서 결과를 테스트하세요.

읽어 볼 교육용 리스팅

add_numbers.asm
; add_numbers.asm - teaching listing, x64 Windows
; Returns the sum of its first two integer arguments.
; Argument 1 arrives in ecx (low half of rcx).
; Argument 2 arrives in edx (low half of rdx).
add_numbers:
    mov eax, ecx    ; copy argument 1 into eax
    add eax, edx    ; add argument 2, the sum stays in eax
    ret             ; return to the caller, result in eax

이 함수는 정수 두 개를 더해요. Windows x64 호출 규약에서는 인수가 ecx와 edx로 들어오고, 합계는 eax에 만들어지며, ret이 호출자에게 제어를 돌려줘요.

분석 수업을 위한 두 가지 연습

직접 쓴 함수로 시작하기

초보자가 흔히 묻는 질문은 어셈블리를 어떻게 시작하느냐인데, 답은 직접 쓴 함수예요. 짧은 C 함수를 쓰고 컴파일해서 리스팅을 텍스트로 내보내세요. read_file이 리스팅을 열면 에이전트가 각 명령어를 설명해요. 어느 레지스터가 어떤 인수를 담는지, 스택이 무엇을 하는지, 결과가 어디로 돌아오는지요. write_file이 그 설명을 notes/begin.md에 저장해요. Plan only에서는 에이전트가 먼저 이 단계들을 나열해요. 아직 아무것도 실행되지 않아요. 그다음 Ask first로 바꾸고 저장할 때마다 diff를 읽으세요. 마지막으로 메모를 내 소스와 비교하고, 합법적이라면 컴파일한 함수를 랩에서 테스트하세요.

내 라이브러리의 함수 문서화하기

API 분석에 좋은 연습은 내 라이브러리가 공개하는 함수를 나열하고 각 인수가 무엇을 하는지 적어 보는 거예요. 내 도구에서 가져온 함수와 공개된 함수의 목록을 텍스트로 저장하면, 에이전트가 grep으로 한 함수의 모든 호출을 찾고 read_file로 그 주변 줄을 열어요. notes/api.md에 표 초안을 만들고, edit_file이 변경마다 diff를 보여 줘요. 함수 하나로 시작하세요. 같은 방법으로 직접 쓴 오래된 코드가 어떻게 동작했는지도 복원할 수 있어요. 에이전트가 자료형이나 목적을 틀릴 수 있으니, 수락하기 전에 각 행을 내 소스와 직접 한 테스트로 확인하세요.

Windows용 CJK Workbench

나만의 예제로 해 보세요

CJK Workbench 다운로드 ↗