Reverse Engineering: 소스 코드 없이 소프트웨어를 읽는 방법
Reverse Engineering은 원본 소스 코드에 접근할 수 없이 컴파일된 소프트웨어를 분석하여 작동 원리를 이해하는 학문입니다. 보안 연구원은 취약점을 찾기 위해, 악성코드 분석가는 악의적인 코드를 분석하기 위해, 펌웨어 엔지니어는 임베디드 시스템을 이해하기 위해 사용합니다. 이 트랙은 원시 바이너리 형식과 Assembly부터 정적 및 동적 분석, 익스플로잇 개발과 고급 anti-RE 기법까지 전체 스택을 다룹니다.
학습 내용
바이너리 기초 — 실행 형식, 메모리 레이아웃, 고수준 코드가 머신 명령어로 매핑되는 방식부터 시작합니다. 그 후 실제 디스어셈블리 출력에 나타나는 x86/x64 Assembly를 읽고 이해합니다. 정적 분석 도구를 사용하여 바이너리를 실행하지 않고 검사한 후, 동적 분석과 디버깅으로 전환하여 실시간 실행을 관찰합니다. 이후 과정에서는 악성코드 분석, 컴파일러 최적화와 의도 은폐 방식, 자동화된 정적 분석을 위한 스크립팅, 실제 환경에서 사용되는 anti-reverse-engineering 기법을 다룹니다. 트랙은 펌웨어 및 임베디드 시스템 Reverse Engineering, 취약점 연구, 익스플로잇 개발, 그리고 해당 분야의 향후 발전 방향을 다루며 마무리됩니다.
학습 경로
12개 과정이 A1부터 C2까지 걸쳐 있습니다. 첫 과정은 A1 수준의 핵심 개념을 무료 미리보기로 소개하고, 다음 두 과정(A2–B2)은 바이너리 이해도와 Assembly 읽기 능력을 구축합니다. 4개의 B2/C1 과정에서는 주요 분석 워크플로우를 다룹니다: 정적 도구, 동적 디버깅, 악성코드 기초, 스크립팅. 마지막 4개 과정(C1–C2)은 가장 어려운 주제를 다룹니다: 컴파일러 최적화와 디스어셈블리에 미치는 영향, 펌웨어 및 임베디드 타겟, 취약점 연구 및 익스플로잇 개발, 현재의 기술 트렌드를 포함한 고급 주제들입니다.
학습 방식
각 과정은 짧고 명확한 레슨으로 구성되어 있으며, 내장 에디터에서 실습 연습을 진행합니다 — Assembly를 읽고, 바이너리에 주석을 달고, 실시간 피드백을 받으며 실제 분석 작업을 수행합니다. 명령어 순서, 도구 플래그 또는 낯선 바이너리 구조에 막힐 때는 모든 단계에서 AI 튜터의 도움을 받을 수 있습니다.