디스어셈블리 기초
Ghidra와 IDA
디스어셈블리 기초은(는) CoddyKit의 무료 Ethical Hacking Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ethical Hacking Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
디스어셈블리란 무엇인가요
디스어셈블리는 바이너리의 기계어 코드를 사람이 읽을 수 있는 어셈블리 명령으로 변환합니다. CPU가 정확히 무엇을 실행하는지 읽을 수 있게 해 줍니다.
악성 코드처럼 소스 코드를 사용할 수 없는 경우에 특히 필수적입니다.
디스어셈블리와 디컴파일 비교
디스어셈블리는 어셈블리를 생성합니다. 디컴파일은 여기서 더 나아가 고수준 C와 유사한 의사 코드로 재구성합니다.
의사 코드는 더 빠르게 읽을 수 있고 어셈블리는 정확합니다. 분석가는 필요에 따라 두 가지를 번갈아 사용합니다.
Ghidra
Ghidra는 NSA가 만든 무료 오픈 소스 리버스 엔지니어링 도구 모음입니다. 여러 아키텍처를 디스어셈블하며 강력한 디컴파일러도 포함합니다.
가격과 기능 때문에 대부분의 분석가가 처음 사용하는 도구입니다.
IDA Pro
IDA Pro는 오랫동안 상용 표준으로 사용되어 온 도구이며, 강력한 디스어셈블러와 (Hex-Rays 플러그인을 통한) 디컴파일러로 유명합니다.
IDA Free와 Binary Ninja, radare2/Cutter 같은 도구도 인기 있는 대안입니다.
바이너리 불러오기
샘플을 도구로 가져오면 도구가 자동으로 분석하여 함수, 상호 참조, 문자열을 식별합니다.
도구는 진입점이나 흥미로운 임포트에서 시작하여 탐색할 수 있는 프로그램 지도를 만듭니다.
어셈블리 읽기
어셈블리 명령은 데이터를 이동하고 연산합니다. 다음은 몇 가지 일반적인 x86 명령입니다.
mov: 데이터를 복사합니다.push / pop: 스택 연산입니다.call / ret: 함수 호출과 반환입니다.cmp / jmp / je: 비교와 분기입니다.
mov eax, [ebp-4]
cmp eax, 0
je short loc_401050상호 참조
상호 참조(xrefs)는 함수나 문자열이 사용되는 위치를 보여 줍니다. CreateRemoteThread와 같은 의심스러운 API의 xref를 찾으면 관련 코드로 바로 이동할 수 있습니다.
이를 통해 코드를 처음부터 끝까지 읽는 대신 동작을 기준으로 탐색할 수 있습니다.
API 호출 따라가기
가져온 Windows API 호출은 의도를 드러냅니다. VirtualAlloc, WriteProcessMemory, CreateRemoteThread가 차례로 나타나는 것은 전형적인 프로세스 주입 순서입니다.
이러한 패턴을 인식하는 것이 악성 코드 리버스 엔지니어링의 핵심입니다.
그래프 보기
디스어셈블러는 기본 블록과 블록 사이의 분기를 보여 주는 그래프 보기를 제공합니다. 이를 통해 함수의 제어 흐름을 시각화할 수 있으므로 반복문과 조건문을 쉽게 따라갈 수 있습니다.
복잡한 논리에서는 선형 명령어 목록보다 훨씬 읽기 쉽습니다.
디버깅과 결합하기
정적 디스어셈블리는 디버거와 함께 사용하면 효과적입니다. 코드가 난독화되었거나 자기 수정 방식으로 동작하는 경우 중단점을 설정하고 실행 중에 한 단계씩 진행하면서 실제 명령어를 확인할 수 있습니다.
이처럼 동적 분석으로 연결되는 과정은 패킹된 샘플을 분석할 때 매우 중요하며, 다음 레슨에서 다룹니다.
이름 변경 및 주석 추가
함수와 변수를 이해하게 되면 디스어셈블러에서 이름을 변경하고 주석을 추가하십시오. sub_401000을 decrypt_config로 바꾸면 이후 분석이 훨씬 쉬워집니다.
이러한 점진적인 레이블 지정 과정을 통해 분석가는 악성 코드 샘플의 전체 논리를 조금씩 재구성합니다.
빠른 확인
Ghidra의 두 가지 주요 출력 결과의 차이를 떠올려 보십시오.
복습
이제 디스어셈블리의 기본을 이해하셨습니다.
- 디스어셈블리는 어셈블리 코드를 생성하고, 디컴파일은 의사 코드를 생성합니다.
- Ghidra(무료)와 IDA Pro가 주요 도구입니다.
- 교차 참조와 API 호출 패턴(주입 순서 등)을 사용하면 동작을 기준으로 탐색할 수 있습니다.
- 그래프 보기는 제어 흐름을 시각화하며, 난독화된 코드에는 디버거를 함께 사용하십시오.
다음에는 언패킹을 통해 패커를 무력화합니다.
자주 묻는 질문
“디스어셈블리 기초” 강의는 무료인가요?
네 — “디스어셈블리 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ethical Hacking Academy 강의 전체를 잠금 해제할 수 있습니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“디스어셈블리 기초”에서 뭘 배우나요?
Ghidra와 IDA 브라우저에서 직접 실행하는 실습 코드로 Ethical Hacking Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ethical Hacking Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ethical Hacking Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“디스어셈블리 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ethical Hacking Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ethical Hacking Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.