Paging?
> 총 32비트 선형주소 중 10비트의 Page Directory와 CPU CR3 Register를 통해 Page Table의 시작 주소를 얻는다.
(Page Directory의 수 : 2^10 =1024)
> Page Table의 시작 주소 + 이전 세그먼테이션에서의 선형주소의 Page Table 값 = 실제 물리 주소의 페이지
Byte Ordering?
> 컴퓨터에서 메모리에 데이터를 저장하는 방식
> 데이터가 메모리에 저장되는 순서에 따라 2가지로 구분
> [ Little Endian(리틀 엔디언) / Big Endian(빅 엔디언) ]
Big Endian
> 데이터가 상위 바이트부터 메모리에 적재 (Network Ordering)
> 높은 비트열 먼저 들어와서 연산 시 데이터를 다 받아야 한다.
> 연산속도가 느리다.
> 비교연산 시 높은 비트열 먼저 비교하면 되므로 유리하다.
Little Endian
> 데이터가 하위 바이트부터 메모리에 적재(Host Ordering)
> 낮은 비트열 먼저 들어와서 바로바로 연산 진행이 가능하다.
> 연산속도가 빠르다.
> 비교연산 시 불리하다.
Reversing 시 필수 Register
> IA32 Register (Intel Architecture 32bit Register)
> 데이터 처리 시 32비트 크기의 데이터를 처리
> 32비트 크기의 주소를 사용. (즉, CPU의 레지스터 크기 = 32Bit)
CPU에서 Register를 사용하는 이유
> 데이터(연산에 필요한 주소, 연산자 등)의 저장공간 용도로 사용
> CPU가 용도에 맞는 각각의 Register들이 존재
> Register는 CPU 안에 구성되어 있기에 데이터를 고속으로 처리 가능
> Register를 알아야만 어셈블리어로 구성되어 있는 명령어 해석 가능
Register 사전 용어 - [CPU 메모리 레지스터]
> EAX = accmulator
산술연산 ,실제 값 가장 많이 사용
> EBX = base regist
메모리 주소 지정을 확장 , 포인터
> ECX = count register
반복횟수
> EDX = data register
입출력 연산 , EAX와 같이 쓰임 (OEP값이 입력)
> OEP (Original entry point)
image base + address of entry point) 시작지점
> image base
PE 파일 저장되는 시작주소 (exe파일 0x00400000)
> address of entry point
메모리 실제 시작
> EBP = base pointer
스택 시작 주소 값
> ESP = stack pointer
스택 끝 주소 값
> EIP = instruction point
다음 명령어가 실행될 메모리주소 저장
> ESI = source index
데이타 출발지 주소에 대한 값 (복사,조작)
> EDI = destination index
데이타 목적지 주소에 대한 값
Register 사전 용어 - [세그먼트 레지스터 (Segment Register)] 16bit 4byte , 8bit 2byte
> CS = code segment 코드 시작
> DS = data segment 데이터 시작
> SS = stack segment 연산작업 임시저장소
Register 사전 용어 - [Basic program execution register]
> General Purpose Registers (32비트 - 8개)
> Segment Registers (16비트 - 6개)
> Program Status and Control Register (32비트 - 1 개)
> Instruction Pointer (32비 트 - 1 개)
General Purpose Registers (범용 레지스터)?
> 범용 레지스터의 크기는 4Byte (32Bit)이며, 8개로 구성되어 있다.
> 필요에 따라 자유롭게 사용이 가능한 Register이다.
'[정보 보안] 리버싱' 카테고리의 다른 글
[Reversing] 기초 이론_Assembly(어셈블리)_3 (0) | 2022.08.22 |
---|---|
[Reversing] 기초 이론_Assembly(어셈블리)_2 (0) | 2022.08.21 |
[Reversing] 기초 이론_Assembly(어셈블리) (0) | 2022.08.20 |
[Reversing] 기초 이론_CPU와 레지스터_3 (0) | 2022.08.19 |
[Reversing] 기초 이론_CPU와 레지스터 (0) | 2022.08.10 |