ssoL2 TISTORY

디버거 이론, Ollydbg, ELF, gdb 본문

sec/reversing

디버거 이론, Ollydbg, ELF, gdb

ssoL2 2021. 3. 5. 18:28
디버거 이론
  • 디버거에는 다양한 디버거 수단 존재
  • ex) break point, single stepping, program run, memory edit 등

 

breakpoint
  • 프로그램 순서대로 실행되다가 breakpoint만나면 멈춤
  • breakpoint : CPU에서 특정 trigger가 발동되면 Interrupt를 발생시키도록 해놓음
  1. Software breakpoint : 보통의 브레이크 포인트로 해당 opcode를 0xCC로 바꿈. => Interrupt 호출
  2. Hardware breakpoint : CPU에 있는 DR0~DR3 레지스터에 세팅하는 브레이크 포인트로, 단 4개만 사용 가능
  3. Memory breakpoint : Guard page로 만들어놓고 접근 시 예외 발생시켜 프로그램 중지

 

Single stepping
  • Step into : call, rep 과 같은 명령이 있을 시 넘어가지 않고 실행
  • Step out : call, rep과 같은 명령을 넘어가고 실행함, 중간에 실행을 안하는게 아니라 다음주소로 넘어감

 

Ollydbg
  • Famous 디버거 ^^
  • 동적분석이 가능하며 플러그인이 많다.

 

Ollydbg - 모듈
  • [Alt + E] key로 메모리에 불러와진 모듈의 목록을 보여줌
  • EXE는 프로그램의 코드 뿐만 아니라 사용하는 라이브러리 함수의 코드가 들어가있는 "DLL" 또한 로딩된다.

 

Ollydbg - String
  • 참조되는 모든 문자열을 볼 수 있다.
  • 오른쪽 클릭 - [Search for] - [All referenced strings]
  • 문자열을 따라가다보면 main 함수를 찾을 수 있다.

 

Ollydbg - 단축 키
  • breakpoint -> [F2] 
  • Run -> [F9]
  • Step Into -> [F7]
  • Step Out -> [F8]
  • step이 진행되면서 변경된 레지스터는 검은색에서 빨간색으로 변경

 

ELF
  • 리눅스에서 실행되는 바이너리
  • gcc -o a a.c로 만들어진 a 파일 또한 ELF 구조 !!
  • IDA로 분석이 가능하다~
  • 참고로 IDA로 분석할 때 EXE보다 간결하고 import하는 함수가 적음. 또한, Symbol도 살아있다.

 

GDB
  • GNU project debugger로 리차드 스톨만이 만듦
  • gdb 바이너리, ELF 바이너리 전용
  • [gdb 프로그램이름] 명령어로 사용 가능하다.

 

  • code 확인 : [disas 함수symbol]
  • breakpoint : [b *주소] or [b *symbol]
  • run :  [r]
  • 프로그램 재개 : [c]
  • data 조회 : [x/[number][type] 주소]              ex) x/20wx $esp, x/100wx 0x08048400
  • -> type 종류 b (1 byte), w (4 byte), g (8 byte), s (문자열), i (instruction)
  • step instrction (함수 내부로 들어감) : [si]
  • next instruction (안들어감) : [ni]
  • 레지스터 상태보기 : [info reg]
  • intel 문법으로 바꾸기 : [set disassembly-flavor intel]

 

 

 

BY 센빠이

'sec > reversing' 카테고리의 다른 글

OEP  (0) 2021.03.06
디버거, IDA  (0) 2021.03.05
intel x86 어셈블리, 스택, 콜링 컨벤션  (0) 2021.03.03
Comments