개요
objdump는 ELF, COFF, a.out 등 다양한 형식의 오브젝트 파일에서 정보를 추출하여 사람이 읽을 수 있는 형태로 보여줍니다. 주로 디버깅, 리버스 엔지니어링, 바이너리 분석에 활용되며, GNU Binutils 패키지의 일부입니다.
주요 기능
- 어셈블리 코드 역어셈블 (Disassembly)
- 파일 헤더 정보 표시
- 섹션 헤더 정보 표시
- 심볼 테이블 확인
- 동적 재배치 정보 확인
주요 옵션
objdump는 바이너리 파일의 특정 부분을 분석하거나 출력 형식을 제어하는 다양한 옵션을 제공합니다.
정보 표시
출력 형식
생성된 명령어:
명령어를 조합해 보세요.
설명:
`objdump` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
objdump를 사용하여 바이너리 파일의 다양한 정보를 추출하는 방법을 보여줍니다.
실행 파일 역어셈블
objdump -d /bin/ls
/bin/ls 실행 파일의 어셈블리 코드를 표시합니다.
모든 헤더 정보 보기
objdump -x /bin/ls
/bin/ls 파일의 모든 헤더 정보를 상세하게 표시합니다.
심볼 테이블 보기
objdump -t /bin/ls
/bin/ls 파일에 정의된 심볼(함수, 변수 등) 목록을 표시합니다.
인텔 문법으로 역어셈블
objdump -M intel -d /bin/ls
/bin/ls 파일의 어셈블리 코드를 인텔 문법으로 표시합니다.
라이브러리 파일 섹션 헤더 보기
objdump -h /lib/x86_64-linux-gnu/libc.so.6
공유 라이브러리 파일의 섹션 헤더 정보를 표시합니다.
팁 & 주의사항
objdump는 강력한 바이너리 분석 도구이지만, 그 결과는 어셈블리 언어 및 바이너리 파일 구조에 대한 기본적인 이해를 요구합니다.
활용 팁
- 특정 함수 분석 시 `objdump -d <file> | grep -A 20 <function_name>`과 같이 `grep`과 조합하여 사용하면 유용합니다.
- 공유 라이브러리 파일(.so)이나 정적 라이브러리 파일(.a) 내부의 오브젝트 파일 분석에도 활용할 수 있습니다.
- 보안 취약점 분석, 악성코드 분석, 시스템 프로그래밍 디버깅 등 다양한 분야에서 핵심적인 도구로 사용됩니다.
주의사항
objdump는 바이너리 파일을 수정하지 않고 정보를 읽기만 하는 안전한 도구입니다. 하지만 출력되는 정보의 양이 많을 수 있으므로, 필요한 옵션을 정확히 사용하여 원하는 정보만 추출하는 것이 중요합니다.