bit
- 가장작은단위. 0 or 1만표현가능하다.
byte
- 8bit = 1 byte. 최대 255까지 표현 가능. 최대 0xFF
word
- 2byte를 합쳐서 word라고 함. Word는 최대 65535까지 표현 가능. 최대 0xFFFF (2byte이니)
double word
- 2word를 합쳐서 double word라고 함. 최대 0xffffffff까지 표현 가능하다. 최대 0xFFFFFFFFF
kbyte
- 1024 byte = kbyte
MEGA BYTE
- 1024Kbyte = 1Mbyte
EIP
- instruction pointer
- cpu가 처리할 명령어의 주소를 나타내는 레지스터
- cpu는 eip가 가르키는 memory address의 instruction을 하나 수행 후, 자동으로 해당 instruction 길이만큼 eip증가
- sw는 이를 조작 못하며, CALL,JMP,RET같은 명령어로만 조작 가능

EAX
- Accumulator Register
- 산술 연산을 할 떄 사용 or 함수의 리턴 값을 전달할때 사용.
- 32비트 표현. 하휘 16비트는 AX라고도 함.
- AX의 상위 8비트는 AH (15 ~ 8) , 하위 8비트는 AL (0 ~ 7)이라고 함.
EBX
- Base Register
- 메모리 주소 지정용 DS세그먼트에 저장된 데이터를 가르킴
- 메모리 주소 계산에서 자주 사용
- BX의 상위 8비트는 BH (15 ~ 8) , 하위 8비트는 BL (0 ~ 7)이라고 함.
ECX
- Count Register
- 반복문에서 카운트로 사용.
EDX
- Data Register
- EAX의 확장 개념이며, mul or div할때 사용
- IN 및 OUT 명령어에서 포트 번호를 지정하는 데 사용
- 범용 데이터 저장
EBP
- Base Pointer Register
- 스택 프레임의 처음(기준) 지점의 주소를 저장
- main함수 실행시 가장 처음 부분 주소.
- main()함수 있고 function()함수 실행되면 function()의 처음주소.
- 즉, ss register가 가르키는 스텍상의 한 데이터를 가르킴
ESP
- stack pointer register
- stack의 끝 지점 주소를 가르킴
- 즉, ss register가 포인터하는 stack segment의 꼭대기를 가르킴
ESI
- Source index register
- DS register가 가르키는 data segment내 어느 데이터를 가르키는 포인터. 데이터 주소를 가르킴.
EDI
- Destination Index Register
- ES register가 가르키는 data segment내 어느 데이터를 가르키는 포인터. 목적지의 주소를 가르킴. 사용가능

CS 레지스터
- code segment의 시작 주소를 가르킴
DS 레지스터
- data segment의 시작주소를 가르킴
- 프로그램에서 정의된 데이터, 상수, 작업 영역 메모리 주소를 지정
SS 레지스터
- stack segment의 시작주소를 가르킴.
ES 레지스터
- 추가로 사용된 data segment주소를 가르킴.
FS, GS 레지스터
- 문자 연산과 추가 메모리를 지정하는데 사용하는 여분의 레지스터임
- 특수한 용도로사용가능
2. 어셈블리 명령어 구조 set disassembly-flavor intel

| Label | 작동코드 | op1 | op2 | 설명문 |
3. 주소지정 방식 Addressing Mode
3-1. 즉시 지정방식( immediate addressing)
- ex) mov eax, 0x1
- eax에 1을 넣는다. (16진수)
- 위와 같이 메모리의 주소의 내용을 꺼내지 않고 직접 값을 대응 시키는 방법을 즉시 지정방식이라고 함
3-2. 레지스터 지정방식( register addressing)
- ex) mov ebp, esp
- ebp레지스터에 esp의 값을 넣는다. (할당). 즉, 새로운 스택 프레임 시작
- register에서 register로 값을 대응시키는 register 지정방식이라고 함
- 속도는 빠르지만, register크기(32bit)로 인해서 크기가 제한
3-3. 직접 주소 지정방식(directly addressing)
- ex) mov eax 0x70456fa1
- eax에 0x70456fa1을 저장
- 메모리의 주소를 직접 저정해서 바로 찾아오는 방식. 로드load라고 생각.
3-4. 변위를 갖는 베이스 인덱스 주소 지정 (변위: 물체가 위치를 바꾸는 일 or 양)
- ex) MOV AL, [BX+SI+0x20]
- BX레지스터와 SI레지스터 값을 더한 후, 여기에 0x20을 더한다.
- 그리고 이를 AL에 저장한다. (X = H L )
3-5. 베이스 상대주소지정방식
- ex) move eax, [esi+0x4]
- esi레지스터에서 4byte를 더한 주소 값을 eax에 할당
- 문자열 연산 or 메모리 블록 전송에서 주로 사용

'보안_기타' 카테고리의 다른 글
| GCD , modular inverse , affine cipher , vigenere cipher (0) | 2024.08.06 |
|---|---|
| caesar cipher , cipher wheel , brute forece를 이용한 caesar 복호화, 열 전치 암호 (0) | 2024.08.05 |
| NOP_seld , ASLR , FRP , NX bit , RTL (1) | 2024.08.02 |
| multiple stack (0) | 2024.07.30 |
| 비트 연산 , 인코딩 , 디코딩 (0) | 2024.07.27 |