OllyDBG

Ollydbg 화면구성

PE 파일 동작한다는 것은 메모리에 올라간 PE 데이터 중에서 .text 섹션에 기록되어 있는 기계어 코드가 실행되는 것이다.

 

1. Disassemble 영역

- 어셈블리 코드를 실행 또는 중지할 수 있도록 한다.

- 왼쪽부터 차례로 Address(명령어가 실행될 주소), 기계어 코드, 어셈블리 코드(기계어를 어셈블리어로 바꿔놓음)로 구성된다.

 

2. 레지스터

- 레지스터는 CPU 내부에 존재하는 다목적 저장 공간

- 이러한 레지스터 값을 표시해주는 곳

 

3. Memory Dump

- Address 주소, Hex dump, 각 Hex에 따른 ASCII코드로 해석된 창을 보여준다.

- 프로세스 동작과정에서 읽고 쓰는 값들을 확인 및 수정이 가능

 

4. Stack

- Stack 영역은 임시 저장 공간

- 스택 주소, 스택 값, comment 순으로 표시된 창

- 함수 호출 시 필요한 인자 정보를 전달

 

 

어셈블리어

:: 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어

기계어를 어셈블리어로 번역하는 작업은 디버거가 알아서 해주기 때문에 기계어를 알아야 하는 경우는 잘 없다.

 

명령어 설명
PUSHAD 8개의 범용 레지스터 값을 Stack에 저장
POPAD PUSHAD 명령에 의해서 Stack에 저장된 값을 다시 레지스터에 입력
PUSH A A값을 Stack에 넣음
POP 레지스터 Stack에서 값을 꺼내서 레지스터에 넣음
INC A A값을 1 증가
DEC A A값을 1 감소

 

명령어 설명
ADD A B A와 B를 더해서 그 결과를 A에 저장
SUB A B A에서 B를 빼고 그 결과를 A에 저장
IML A B A와 B를 곱한 후 그 결과를 A에 저장
LEA A B A를 B로 만듬(레지스터에서 주로 사용)
MOV A B B를 A로 복사
XCHG A B A와 B를 바꿈
TEST A B A와 B를 AND 연산
(연산 결과 값이 a에 저장되지 않지만 ZF 플래그 설정에 영향을 줌)
(연산 결과가 0이면 ZF가 1이 되고 연산 결과가 0이 아니면 ZF는 0이 된다)
AND A B A와 B를 AND 연산
(연산 결과 값이 a에 저장되고 ZF 플래그 설정에 영향을 줌)
(연산 결과가 0이면 ZF가 1이 되고 연산 결과가 0이 아니면 ZF는 0이 된다)
CMP A B 비교 구문. A와 B가 같은지 판단
(같을 경우 ZE는 1이 되고 다를 경우 ZE는 0이 된다.)

 

명령어 설명
JMP                         Address 해당 주소로 무조건 이동
JZ(Zump if Zero)         Address 연산 결과가 0이면(ZE=1)이동하고,
아니면(ZF=0) 다음 명령을 실행
ZE(Zump if Equal)        Address 연산 결과가 0이면(ZE=1)이동하고,
아니면(ZF=0) 다음 명령을 실행
JNZ(Zump if not Zero)  Address 연산 결과가 0이 아니면(ZF=0)이동하고,
0이면 (ZE=1) 다음 명령을 실행
JNE(Zump if not Equal) Address 연산 결과가 0이 아니면(ZF=0)이동하고,
0이면 (ZE=1) 다음 명령을 실행

 

명령어 설명
MOVE         DWORD PTR DS:[Address],  EAX Address부터 4Byte 값을 EAX로 복사
CALL          DWORD PTR DS:[Address] Address부터 4Byte 주소 값을 호출

DWORD ; 크기 값 (BYTE : 1byte, WORD : 2byte, DWORD: 4byte)

PTR ; 기준

 

 

주요 단축키

단축키 정보 설명
F2 BreakPoint를 설치하고 해제
F7 하나의 명령어 실행,
Call 명령어 실행 시 해당 함수 내부로 들어감
F8 하나의 명령어 실행,
Call 명령어 실행 시 해당 함수 내부로 들어가지 않음
F9 실행(Execute)
Ctrl + F2 디버깅을 처음부터 다시 시작(재실행)
Ctrl + F9 해당 함수 내에서 RETN 명령어까지 실행
Ctrl + G
원하는 주소로 이동
Alt + M Memory Map 확인

 

'Study > Reversing' 카테고리의 다른 글

Reversing.kr 1번 풀이  (0) 2021.03.24
main 함수 찾기  (0) 2021.03.23
IAT & EAT  (0) 2021.01.25
PE 헤더  (0) 2021.01.24
PE File Format 이해  (0) 2021.01.23

+ Recent posts