시스템 보안 Day 10 (2)
▣ 어셈 블리어 및 gdb 디버그 확인
ⓐ 'assem1.c' 작성
[level1@ftz level1]$ cd tmp
[level1@ftz tmp]$ vi assem1.c
[level1@ftz tmp]$ gcc -S -o assem1.a assem1.c
[level1@ftz tmp]$ file assem1.a
[level1@ftz tmp]$ file assem1.c
[level1@ftz tmp]$ cat assem1.a
[level1@ftz tmp]$ gcc -o assem1 assem1.c
[level1@ftz tmp]$ file assem1 → ELF : Linux 실행 파일
[level1@ftz tmp]$ gdb -q assem1
(gdb) disas main
(gdb) disas function
ⓑ 'assem2.c' 작성
[level1@ftz tmp]$ vi assem2.c
[level1@ftz tmp]$ gcc -o assem2 assem2.c
[level1@ftz tmp]$ gdb -q assem2
(gdb) disas main
ⓒ 'assem3.c' 작성
[level1@ftz tmp]$ vi assem3.c
[level1@ftz tmp]$ gcc -o assem3 assem3.c
[level1@ftz tmp]$ gdb -q assem3
(gdb) disas main
ⓓ 'assem4.c' 작성
[level1@ftz tmp]$ vi assem4.c
[level1@ftz tmp]$ gcc -o assem4 assem4.c
[level1@ftz tmp]$ gdb -q assem4
(gdb) disas main
(gdb) disas sub
(gdb) b *main → Break Point 설정
(gdb) run
(gdb) disas main
(gdb) x/12x $esp → x : 16진수 / 12x: 12개 추출 / $esp : esp 레지스터
(gdb) info reg → 레지스터 확인
(gdb) ni → 한 단계씩 진행 / 함수 실행시 (gdb) si
ⓔ 'assem5.c' 작성
[level1@ftz tmp]$ vi assem5.c
[level1@ftz tmp]$ gcc -o assem5 assem5.c
[level1@ftz tmp]$ gdb -q assem5
(gdb) disas main
(gdb) x/s 0x8048408
──────────────
0x8048408: "a:%d"
──────────────