[Rev] 리버싱 · 작성: 2026-07-20 03:10:34 · 수정: 2026-07-20 03:11:15 · 조회 4
ELF를 다뤘던 것과 비슷하게, 윈도우 실행 파일(PE, Portable Executable) 리버싱을 시작하려면 이 포맷 구조부터 이해해야 한다. exe, dll, sys 전부 이 포맷을 쓴다.
DOS Header (MZ) → DOS Stub → PE Header (NT Headers) → Section Headers → Sections (.text, .data, .rdata, .rsrc, ...)
프로그램이 어떤 DLL의 어떤 함수를 쓰는지가 Import Table(보통 .rdata에 병합됨)에 다 나열되어 있다. 악성코드 분석에서 이 테이블을 제일 먼저 본다 — WinExec, VirtualAlloc, InternetOpenUrl 같은 함수가 임포트되어 있으면 뭘 하려는 프로그램인지 감이 온다.
# CLI로 Import Table 빠르게 확인
objdump -x binary.exe | grep "DLL Name"
# pefile(Python)로 스크립트화
import pefile
pe = pefile.PE('binary.exe')
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print(entry.dll, [imp.name for imp in entry.imports])
Import Table에 정상적이지 않은 조합(예: 일반 문서 뷰어인데 WinExec와 URLDownloadToFile을 같이 임포트)이 보이면 그 자체가 강한 악성 지표가 된다.