# 1강
📌어셈블리어: 기계어를 일정한 규칙에 따라 대응시킨 것
-기계어 -> CPU에 따라 상이
-어셈블리어-> 기계어를 1:1로 기호와 알파벳으로 변환한 것, *사람이 읽기 편함*
*컴퓨터 구조→ 기계어 → 어셈블리어, 따라서 어셈블리어도 각각 다름
CPU마다 지원하는 오퍼레이션(연산)의 타입과 개수는 제각각, 레지스터의 크기나 개수도 다름
📌 어셈블러: 어셈블리어를 기계어로 바꿔주는 프로그램, 어셈블리어를 기계어 형태의 오브젝트 코드로 해석
-MASM, FASM, NASM, GAS 등이 있음
-지시어가 어셈블러마다 다름!
**ollydbg 사용**
-ollydbg: 바이너리 코드 분석을 위한 x86 디버거, 리버스 엔지니어링에 종종 사용됨
#2강
📌어셈블리어→ intel 문법 vs AT&T 문법
- 차이점
**접두사 규칙, 오퍼랜드 위치, 메모리 오퍼랜드, 접미사 규칙 등이 다름**
[https://hardner.tistory.com/22](https://hardner.tistory.com/22) 참고
📌어셈블리어의 구조
-명령어(OpCode), 피연산자(Operand)
ex) mov eax, 1
mov: OpCode
eax, 1: Operand
ollydbg에서 맨 윗줄을 더블클릭하면 어셈블리어 명령어를 작성할 수 있음
📌레지스터: CPU 내의 빠른 저장공간, 용량이 작음, 따라서 프로그램의 전체 내용을 담을 수 없음, 각 4Byte(32bit)씩 저장 가능
EAX ESP ESI
EBX EBP EBI
ECX
EDX
# 3강
📌Mov
MOV REG, IMM(값) ex) mov eax, 1
MOV REG, REG ex) mov eax, ebx
*어셈블리어는 대소문자를 구분하지 않음
- ollydbg 사용
MOV EBX, 0A → 레지스터 더블클릭 후 값 변경 가능
🖇E[A,B,C,D]X
-Intel 16bit 시절에는 AX라는 2Byte짜리 레지스터가 존재
-Ax의 자리수가 낮은 쪽을 AL(low), 높은 쪽을 AH(high)라는 이름으로 이용
->extended AX =>**EAX(4Byte)**
ex) MOV EAX 12D687
00 12 D6 87
AH, AL 영역에 따로 값을 덮어쓸 수 있음. 단, 크기가 같아야 함 주의
Ex) Mov CH, 0A
'해킹 및 보안 > 리버싱' 카테고리의 다른 글
[스무디] 어셈블리어 강의 정리 (18~22강) (0) | 2022.11.10 |
---|---|
[스무디]어셈블리어 강의 13~17강 정리 (0) | 2022.10.13 |
[스무디] 어셈블리어 강의 8~12강 정리 (0) | 2022.10.06 |
[스무디] 어셈블리어 강의4~7강 정리 (0) | 2022.10.02 |
리버싱 입문 (0) | 2022.10.02 |