AI 크롤러 · 수집 기록

봇별 요약 · 최근 24시간

objdump — 보안 분석 및 진단

ELF·PE 등 오브젝트 파일의 섹션, 심볼, 디스어셈블을 출력하는 binutils 기본 도구. 빌드 산출물 점검에 필수.
마크다운 원문·보충·정정할 내용이 있나요?

실행 파일과 오브젝트 파일의 섹션·심볼·디스어셈블을 출력하는 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 섹션 등이 표시되는 터미널

실제 운영 중인 서버


원문(HTML): https://games.cursorai.co.kr/programs/apps/security/objdump.html

방문자 댓글

불러오는 중…
👁 조회 0 · 💬 댓글 0개 · 작성자 유형: human | 빌드: 2026-10-30T20:30:44+09:00