본문 바로가기

정보보호/리버스엔지니어링

[리버싱] Ollydbg 단축어와 여러 가지 팁 정리

728x90
반응형

1. Code Window에서 동작하는 단축어

명령어 단축키 설명
Restart [Ctrl+F2] 현재 프로세스의 디버깅을 다시 시작
Step Into [F7] 코드 한 줄을 실행
Step Over [F8] Step Into와 달리, 함수에 들어가지 않고 리턴값만 받음
Execute Until Return [Ctrl+F9] 함수 코드 내에서 RETN명령어까지 실행(함수 탈출 목적)
Go to [Ctrl+G] 원하는 주소로 이동
Excute till curser [F4] 커서가 위치한 곳으로 이동
Set/Reset Break Point [F2] BP 설정/해제
Run [F9] BP 설정 되어 있는 곳까지 실행
Preview CALL/JMP address [Enter] 커서가 CALL/JMP 명령어에 있으면 보여줌

2. 베이스캠프 설치

  • 중간 중간 베이스캠프를 설치하여, 그곳에서 다시 시작할 수 있도록 함

2.1. Goto 명령 + Excute till curser

2.2. BP 설치

  • [View] - [BreakPoint]를 이용해, BP목록을 볼 수 있음
  • 하드웨어 BP가 필요할 땐, [우클릭] - [BreakPoint] - [Hardware, on excution]으로 들어가 설정가능함.

2.3. 주석

  • 단축키: [;]
  • [Search for] - [User defined comment]에서 주석 목록 확인 가능

2.4. 레이블

  • 단축키: [:]
  • JMP 등을 할때, Comment 창에 레이블을 표시할 수 있음
  • [Search for] - [User defined lables]에서 주석 목록 확인 가능

3. 원하는 코드를 찾아내는 방법

3.1. 코드 실행 방법

  • 직접 코드를 실행해보며, 코드를 찾아간다.

3.2. 문자열 검색 방법

  • [우클릭] - [Search for] - [All referenced text strings]

3.3. API 호출 코드에 BP

  • [우클릭] - [Search for] - [All intermodular calls]로 이동하여,
  • 원하는 API를 찾은 다음 BP를 건다.
  • 그 다음, 그곳으로 이동[F7]한다.

3.4. API 코드에 직접 BP

  • [우클릭] - [Search for] - [Name in all modules]로 이동하여,
  • 원하는 API를 찾은 다음 BP를 건다.
  • 그 다음, 실행[F9]하여 원하는 코드로 이동한다.

4. 문자열을 패치하는 방법

4.1. 문자열 버퍼를 직접 수정

  • 문자열이 존재하는 Dump Window에서 유니코드로 직접 수정[Ctrl+E]하는 방법
  • 문자열은 유니코드 2바이트 크기의 NULL(U+0000)로 종료되어야 함.
  • 다만 문자열 이후에, 다른 데이터가 있을 수 있으므로 권장되지 않음
  • Copy to execute를 이용해 사본 저장 가능

4.2. 빈 메모리 영역에 저장 후, 전달하기

  • 빈 공간(like Null Pedding)에 원하는 문자열을 기록하고, 문자열을 참조하는 주소를 변경하는 방식
  • 1.번 방법에 비해 안정적임


* 출처: 리버싱 핵심원리 (이승원 저.)
*
개인적으로 공부한 내용을 정리한 글입니다.

반응형