Computer Security

#5 리눅스 qemu&gdb 셋팅 본문

리눅스 커널 해킹

#5 리눅스 qemu&gdb 셋팅

쿠리 Kuri 2022. 8. 13. 18:30
반응형

qemu

 

리눅스에서 사용하는 에뮬레이터이며, KVM(1)을 추가하여 가상 머신으로 사용할 수 있다.

qemu-kvm 에서 Hypervisor를 지원한다.

qemu의 다양한 옵션들을 이용해 script를 작성해서 커널을 부팅할 수 있다.

 

 

 

(1) :KVM(Kernel-based Virtual Machine: 커널 기반 가상 머신)은 Linux®에 구축되는 오픈소스 가상화 기술이다.

구체적으로 말해서, KVM을 사용하면 Linux를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM(가상 머신) 등 격리된 가상 환경 여러 개가 실행되도록 할 수 있습니다.

 

 


1. 리눅스의경우 기본적으로 qemu가 설치되어있으며, qemu-kvm 을 apt-get install qemu-kvm 명령어를 통해 설치 해주자.

apt-get install qemu-kvm

 

 

2. 일반적으로 사용되는 qemu스크립트는 아래와 같다. vi boot.sh 를통해 스크립트를 작성 후, chmod +x boot.sh명령어를 통해 권한을 획득후, 중요 옵션들을 살펴보자.

boot.sh

-m512M : 주 메모리 512mb 할당

-kernel./bzImage : bzImage를 커널 이미지로 사용

-initrd ./rootfs.cpio : rootfs.cpio를 파일 시스템으로 사용

-append"nokaslr" : KASLR 보호기법 미적용

-cpu smep : SMEP 보호기법 적용

-s : gdb attach를 위한 1234번 포트를 open

 

 


gdb

 

  • GNU 시스템에서 사용되는 기본 디버거
  • gdb의 remote debugging 기능을 통해 리눅스 커널을 디버깅 할 수 있다.
  • 편의를 위해 gdb script를 작성해서 사용하도록 한다.

 


아래와 같이 스크립트를 작성해주자.

gdb_remote.sh

qemu script에서 -s 옵션을 통해 1234번 포트를 열어놨기 때문에, 1234번 포트를 이용해서 qemu를 디버깅 할 수 있다.

 

target remote localhost:1234 gdb 명령을 통해 attach 가능


직접 gdb를 해보면

한쪽 터미널에서 ./boot.sh 를 실행 시켜준뒤에, 다른 쪽 터미널에서 ./gdb_remote.sh 를 실행 시켜준다.

터미널

그 뒤에 반응이 없으면 ctrl + c 를 눌러주어서 gdb 를 실행 시켜주면된다!

 

 

반응형

'리눅스 커널 해킹' 카테고리의 다른 글

#7 리눅스 커널 보호 기법  (0) 2022.08.15
#6 리눅스 CTF에서의 환경 셋팅  (0) 2022.08.14
#4 리눅스 커널&파일 시스템 빌드  (0) 2022.08.12
#3 리눅스 커널 3  (0) 2022.08.11
#2 리눅스 커널 2  (0) 2022.08.10
Comments