① 가상메모리
- 위치 : 가장 왼쪽 부분
- 설명 : 프로그램이 실행이 되면 프로세스가 되어 메모리에 올라가는데 이 때의 메모리는 [가상메모리]이다. 가상 메모리는 물리메모리를 효율적으로 사용하기 위해 운영체제가 사용하는 시스템으로 이 때 물리메모리는 컴퓨터 사양에 나오는 메모리( ex, 8G메모리, 16G메모리)를 말한다.
② 기계어코드
- CPU가 읽어들어 실행하는 코드
- 알아볼 수 없는 숫자로 되어있다.
③ 어셈블리어
- 기계어코드와 1:1 매핑하여 사람이 알아보기 쉽도록 만든 언어
④ 주석
- ;을 이용하여 작성 가능
⑤ 레지스터
- CPU가 사용하려고 가지고 있는 데이터
- EAX (누산기) : 계산에 대한 저장을 하는 데이터, 함수의 결과가 저장되는 레지스터
- EBX (Base Register) : 다목적으로 사용
- ECX (Counter Register) : 숫자를 카운팅하기 위해 사용 (ex 반복문)
- EDX (Data Regiester) : 다목적으로 사용
- ESI (Source Index) : 암복호화 혹은 데이터 복사 등을 위한 출발지
- EDI (Destination Index) : 암복호화 혹은 데이터 복사 등을 위한 목적지
- EBP (Base Pointer) : 스택의 아랫부분을 가리키는 포인터
- ESP (Stack Pointer) : 스택의 윗부분을 가리키는 포인터
- EIP (Index Pointer) : CPU가 다음에 실행할 명령어 주소
⑥ 덤프
- 데이터를 볼 때 많이 사용
- 컴퓨터의 경우 hex 코드로 저장되어 있는데 이를 영문자로 보여주는 것이 ASCII 코드
⑦ 스택
- 실제로 데이터가 저장되는 공간
- 스택은 가상 메모리의 또다른 공간에 따로 존재함
- ESP와 EBP를 통해 스택이 구성되어있고, Relative 기능을 이용하여 ESP와 EBP로부터 얼마나 떨어져있는지 확인이 가능함.
※ EAX의 구성
- EAX= Extension AX으로 4바이트(32bit)를 나타냄
ex) 12345678
- AX = EAX의 반으로 2바이트(16bit)를 나타냄
ex) 5678
- AH / AL = A High와 A Low로 각각 상위와 하위의 1바이트(8bit)를 나타냄
ex) 56 과 78
※ Ollydbg 단축키
- Ctrl + F2 : 재시작
- F8 : 한 스텝(Over) 진행
- F7 : 한 스텝(Into) 진행
- Enter : 실행이 아닌 그냥 따라가서 해당 위치 확인
- Ctrl + g : 해당 주소로 이동
- F2 : BreakPoint ( udd에 저장되기 때문에 Ollydbg를 끄고 다시 실행해도 남아있다)
- F9 : 실행
- Space bar : Assembly 언어 수정
※ 특정 함수에 대해 알고 싶을 때
- 구글에 해당 [함수명 + msdn] 으로 검색하면 됌.
ex) CreateFileA msdn
- 접근하면 해당 함수에서 필요로하는 인자값들과 리턴값 등에 대해 자세히 알 수 있음.
※ 명령어
- CMP : 두 값을 비교 후 일치할 경우 Zero Flag가 1로 세팅
- JNZ : Jump if Not Zero의 명령어로 zero flag가 1이 아니면 점프를 해라. 즉, 비교 결과 "일치하지 않을 경우 점프를 해라" 라는 의미이다.
- TEST EAX, EAX : EAX에 0이 들어가있는지 TEST를 한다. 만약 EAX에 0이 들어가있을 경우 Zero Flag가 1로 세팅
- JL, JG, JE = Jump Less-than, Jump Greater-than, Jump Equal 의 명령어로 바로 위에 있는 CMP 명령어의 결과에 따라 분기함. JL의 경우 S Flag가 세팅되어있으면 Jump 함.
※ 분기문 수정
- 항상 넘어가게 하고 싶을 때는 분기문(JL, JNZ 등등)을 JMP 명령어로 수정하여 항상 점프하도록 변경
- 반대로 항상 넘어가지 않도록 하고 싶을 땐 해당 분기문을 nop 명령어로 수정하여 해당 분기문을 실행하지 않도록 수정
'Hacking > Reversing' 카테고리의 다른 글
Visual Basic 파일 분석 (0) | 2018.11.18 |
---|---|
3월 5일자 (0) | 2018.03.05 |
immunity debugger가 바로 꺼질 때 해결 (2) | 2016.01.03 |