[C][해킹] 컴파일된 바이너리 파일 살펴보기 (objdump)

PersesTitan·2022년 12월 31일
0

C

목록 보기
1/9
post-thumbnail
post-custom-banner

objdump는 C언어를 컴파일한 실행파일을 어셈블리어로 보여줄 수 있게하는 GNU 바이너리 유틸리티 입니다.

코드

간단한 예제 코드를 만들어서 실행해보았습니다.

#include <stdio.h>

int main() {
    printf("안녕하세요.");
    return 0;
}

실행

macos를 사용할때 objdump가 없다면 xcode를 깔아야합니다.
저는 CLion을 사용하였는데 저랑 같은 CLion이라면 cmake-build-debug/CMakeFiles/프로젝트명.dir안에 .out, .o파일이 있으니 해당 디렉토리로 이동하면 됩니다.

objdump -D a.out | grep -A20 main.:
0000000100003ee8 <_main>:
100003ee8: ff 03 01 d1  sub     sp, sp, #64
100003eec: fd 7b 03 a9  stp     x29, x30, [sp, #48]
100003ef0: fd c3 00 91  add     x29, sp, #48
100003ef4: bf c3 1f b8  stur    wzr, [x29, #-4]
100003ef8: a0 83 1f b8  stur    w0, [x29, #-8]
100003efc: a1 03 1f f8  stur    x1, [x29, #-16]
100003f00: a9 83 5f b8  ldur    w9, [x29, #-8]
100003f04: e8 03 09 aa  mov     x8, x9
100003f08: e9 03 00 91  mov     x9, sp
100003f0c: 28 01 00 f9  str     x8, [x9]
100003f10: 00 00 00 90  adrp    x0, 0x100003000 <_main+0x28>
100003f14: 00 50 3e 91  add     x0, x0, #3988
100003f18: 1c 00 00 94  bl      0x100003f88 <_printf+0x100003f88>
100003f1c: bf c3 1e b8  stur    wzr, [x29, #-20]
100003f20: 01 00 00 14  b       0x100003f24 <_main+0x3c>
100003f24: a8 c3 5e b8  ldur    w8, [x29, #-20]
100003f28: a9 83 5f b8  ldur    w9, [x29, #-8]
100003f2c: 08 01 09 6b  subs    w8, w8, w9
100003f30: 4a 02 00 54  b.ge    0x100003f78 <_main+0x90>
100003f34: 01 00 00 14  b       0x100003f38 <_main+0x50>

아래의 명령어를 입력하면 결과가 출력되는 것을 볼 수 있었습니다.
참고로 -A20는 20줄을 의미하므로 숫자부분을 변경하여 원하는 출력 갯수를 지정할 수 있습니다.
100003ee8부분은 주소를 의미합니다.

profile
안녕하세요 페르세스 티탄입니다! 부족한 부분이 많이 있겠지만 잘부탁드립니다.
post-custom-banner

0개의 댓글