objdump — 보안 분석 및 진단

최신 도구 가이드 / 보안 분석 및 진단 / objdump.html

보안 분석 및 진단원문등록 2026-10-18

실행 파일과 오브젝트 파일의 섹션·심볼·디스어셈블을 출력하는 GNU binutils 기본 도구입니다.

기본 정보

프로그램 이름objdump (옵덤프)
한 줄 소개실행 파일과 오브젝트 파일의 섹션·심볼·디스어셈블을 출력하는 GNU binutils 기본 도구입니다.
개발·유지GNU Project (binutils)
공식 홈페이지https://www.gnu.org/software/binutils/
공식 문서https://sourceware.org/binutils/docs/
공식 다운로드https://ftp.gnu.org/gnu/binutils/
지원 운영체제Linux, macOS, Windows (MinGW 등 툴체인)
라이선스GPL-3.0-or-later
안정 버전binutils 2.46 계열 (2026-02 공개) — 확인일 2026-10-18
GitHub 저장소https://sourceware.org/git/binutils-gdb.git
분류보안 분석 및 진단 (태그: 디스어셈블, 오브젝트 파일, ELF 분석)

이 프로그램은 무엇인가?

objdump는 GNU binutils에 포함된 명령줄 도구로, 실행 파일·오브젝트 파일(.o)의 섹션 목록, 심볼 테이블, 디스어셈블 코드를 사람이 읽을 수 있게 출력합니다.

컴파일 결과물이 의도대로 만들어졌는지(심볼이 남아 있는가, 어떤 라이브러리를 연결했는가)를 점검할 때, 그리고 라이브러리 오류로 인한 링크 문제를 추적할 때 기본 도구로 쓰입니다. gcc로 만든 서버 프로그램을 점검하는 서버 관리자에게도 익숙한 이름입니다.

어떤 문제를 해결하는가?

  • 빌드한 실행 파일·오브젝트 파일이 올바른 구조인지 확인해야 할 때.
  • 크래시 로그의 주소가 어느 함수·어느 코드 라인인지 좁혀야 할 때.
  • 바이너리에 어떤 심볼·섹션이 남아 있는지 점검해야 할 때 (디버그 심볼 제거 여부 등).
  • GDB 없이 파일 단위로 디스어셈블 결과를 문서·리포트로 남겨야 할 때.

주요 기능

섹션·헤더 정보

-h 옵션으로 섹션 목록과 크기·플래그를 출력합니다.

  • 활용 상황: ELF 파일의 .text, .data, .bss 구성을 확인합니다.
  • 얻는 결과: 섹션 배치와 크기를 표로 얻습니다.
  • 제한 사항: 심층 분석에는 readelf·GDB가 더 상세한 정보를 제공합니다.

디스어셈블

-d 옵션으로 지정 섹션을 기계어→어셈블리로 변환합니다.

  • 활용 상황: 크래시 난 주소 근처 코드를 확인합니다.
  • 얻는 결과: 해당 주소의 어셈블리 명령과 심볼 라벨을 얻습니다.
  • 제한 사항: 수백만 줄 출력이 될 수 있어 grep·less 파이프가 필수적입니다.

심볼 테이블 출력

-t로 심볼 목록, -T로 동적 심볼을 출력합니다.

  • 활용 상황: 동적 링크 대상(라이브러리 함수)을 확인합니다.
  • 얻는 결과: undefined 심볼 여부로 링크 오류 원인을 좁힙니다.
  • 제한 사항: stripped 바이너리는 심볼이 거의 없어 제한적입니다.

소스 혼합 표시

-S 옵션으로 디버그 정보가 있으면 소스 코드와 섞어 보여 줍니다.

  • 활용 상황: 디버그 빌드로 재현한 문제를 소스 단위로 확인합니다.
  • 얻는 결과: 소스 라인과 어셈블리 대응을 얻습니다.
  • 제한 사항: 디버그 정보가 제거된 바이너리에서는 동작하지 않습니다.

설치 및 실행

Ubuntu / Debian

binutils 패키지에 포함되어 있으며 보통 gcc 설치 시 함께 들어옵니다.

sudo apt update
sudo apt install binutils

RHEL / CentOS / Fedora

기본 저장소에서 binutils를 설치합니다.

sudo dnf install binutils

버전 확인

설치된 버전을 확인해 공식 최신 버전과 비교합니다.

objdump --version | head -1

실제 사용 예제

섹션 목록 확인

ELF 파일의 섹션 구성을 봅니다.

objdump -h ./app-server

디스어셈블 (예시)

main 심볼 근처를 디스어셈블합니다. 출력은 예시입니다.

objdump -d --disassemble=main ./app-server

동적 심볼 확인

동적으로 연결된 함수 목록을 봅니다.

objdump -T ./app-server | head

장점과 한계

장점

  • 거의 모든 Linux 개발·빌드 환경에 기본으로 들어 있어 설치 부담이 없습니다.
  • 파일 단위 정적 분석에 충분한 기능을 명령줄로 제공합니다.
  • GDB·readelf와 함께 표준 binutils 구성이라 문서와 자료가 풍부합니다.
  • GPL 라이선스로 자유롭게 사용·재배포됩니다.

사용 전에 고려할 점

  • GUI나 디컴파일 기능이 없어 사람 코드 수준의 이해는 추가 도구가 필요합니다.
  • 대형 바이너리는 출력량이 방대해 필터링 스킬이 요구됩니다.
  • stripped 파일에서는 심볼 기반 디스어셈블이 제한됩니다.
  • PE·Mach-O 지원은 ELF에 비해 제한적일 수 있습니다.

비슷한 프로그램과 비교

프로그램특징이런 경우에 적합
readelfELF 전용으로 더 상세한 헤더·동적 섹션 정보를 제공합니다.ELF 메타데이터를 정밀 확인할 때.
gdb실행 중 디버깅과 정적 디스어셈블을 모두 지원합니다.실행 상태 변수·스택까지 봐야 할 때.
radare2다중 아키텍처 리버싱 프레임워크로 GUI·스크립팅이 강합니다.다양한 아키텍처 바이너리를 깊게 분석할 때.

공식 자료 및 추가 학습

버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.

실제 실행 화면

objdump 섹션 헤더 출력(-h)을 서버 풍으로 재구성한 합성 예시입니다. 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

objdump -h ELF 섹션 목록 출력: .interp, .note 섹션 등이 표시되는 터미널

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.