inflearn logo
강의

Course

Instructor

Linux Kernel Hacking: A to Z

디버깅 방법

Resolved

928

r0am

4 asked

0

안녕하세요! 강의도 다시 돌려보고 인터넷도 다 뒤져봐도 커널에서는 gdb로 디버깅을 어떻게 하는지 도저히 모르겠습니다ㅠㅠ

지금까지 이해한 바로는

/usr/src/linux-headers-$(uname -r)/scripts/extract-vmlinux bzImage > vmlinux

를 통해 vmlinux파일 추출하고 gdb ./vmlinux 로 실행한 뒤 target remote localhost:1234 하면 되는 것으로 이해 했는데 아무런 반응이 없습니다... (참고로 현재 pwngdb 사용 중 입니다.)

강사님 예제파일을 보면 보통 c코드, start.sh, rootfs.cpio, bzImage 이렇게 주어지는데 이 파일들로 무엇을 해야 gdb 분석이 가능한가요? 죄송하지만 처음부터 자세하게 설명 부탁드립니다ㅠㅠ

항상 좋은 강의 감사합니다.


linux 모의해킹 시스템 해킹

Answer 3

1

v4bel

안녕하세요.

일반적인 디버깅 순서는 다음과 같습니다.

  1. start.sh 스크립트를 실행하여 qemu를 실행

  2. 터미널을 하나 더 열고, gdb_remote.sh 스크립트 실행

 

2.2. qemu & gdb 세팅 강의에서 사용하는 gdb_remote.sh 스크립트는 다음과 같습니다.

gdb \

-ex "add-auto-load-safe-path $(pwd)" \

-ex "file vmlinux" \

-ex 'set arch i386:x86-64:intel' \

-ex 'target remote localhost:1234' \

-ex 'break start_kernel' \

-ex 'continue' \

-ex 'disconnect' \

-ex 'set arch i386:x86-64' \

-ex 'target remote localhost:1234' \

gdb 스크립트는 gdb 명령어들을 간단히 사용하기 위해 짜둔 스크립트를 뜻합니다.

스크립트의 주요 내용은, qemu에서 -s 옵션으로 열어 둔 1234 포트에 target remote localhost:1234 gdb 명령을 이용해 remote로 접속하여 디버깅을 진행한다는 것입니다.

 

또한, pwndbg를 사용하시는 경우, qemu & gdb 세팅 강의에서 시연하는 대로 gdb가 멈춘 뒤, ctrl + c 를 여러 번 입력하여 시그널을 보내주어야 remote가 성공적으로 연결됩니다. (이것은 pwndbg 플러그인의 문제입니다.)

감사합니다.

0

v4bel

CTF 문제를 풀 때도 동일한 방법을 사용하시면 됩니다.

0

r0am

자세한 답변 감사합니다! 혹시 CTF문제를 풀 때도 위와 같은 방법을 사용하면 될까요?

강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?

0

68

2

cred 구조체에 __randomize_layout이 적용된건가요?

0

79

1

ppt자료 문의

0

104

2

빌드환경 및 커널소스의 버전

0

131

1

Stack based BOF 강의에서 질문입니다.

0

175

2

kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문

0

211

1

CTF 참가 시 전문 분야

0

312

1

SMAP 우회에서 궁금한게 하나 있습니다.

0

402

2

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?

0

460

1

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요

0

310

1

여전히 해결책 없는 build_result

0

423

1

KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?

0

602

1

build_result가 안보입니다

0

285

1

kernel stack pivoting에서 gadget 관련 질문드립니다.

0

501

1

안녕하세요 수강중 궁금한 것이 있습니다.

0

570

2

pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.

0

579

1

가젯에 대해 이해가 잘 안됩니다.

0

604

1

Kernel KPTI 적용시 영향?

0

652

1

qemu 스크립트 실행시 Kernel panic이 발생합니다.

0

878

2

Kernel UAF

0

646

1

강의 자료 문의

0

374

1

boot.sh 실행시

0

359

1

Kernel Debugging

0

408

1

./boot_sh를 통해 qemu-script 실행 시 커널 실행이 안됩니다.

0

369

3