-
어셈블리> Information Security/Reverse Engineering 2010. 7. 1. 00:00
1. 어셈블리어?
어셈블리(assembly)어는 기계와 일대일대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.
2. 어셈블리 명령어
INC (Increase) 피연산자에서 1을 더한다
ZF, OF 세트가능ex) INC reg DEC (Decrease) 피연산자에서 1을 뺀다
ZF, OF 세트가능ex) DEC reg ADD (Add) Destination에서 Source를 더해서
Destination에 저장
ZF, OF, CF 세트 가능ex) ADD eax, 123
eax에서 123을 더한 후 eax에 저장SUB (Subtract) Destination에서 Source를 빼서
Destination에 저장
ZF, OF, CF 세트 가능ex) SUB eax, 123
eax에서 123을 뺀 후 eax에 저장MUL (Unsigned Integer Multiply) 부호 없는 ax, al, eax의 값을 피연산자에 곱함
OF, ZF 세트 가능ex) MUL reg IMUL (Integer Multiplication) 부호 있는 ax, al, eax의 값을 피연산자에 곱함
CF, OF 세트 가능ex) IMUL reg DIV (Unsigned Integer Divide) 8, 16, 32bit의 부호없는 정수의 나눗셈 수행 ex) DIV reg
- MUL
8bit → al 과 곱 → ax
16bit → ax 와 곱 → dx:ax
32bit → eax 와 곱 → edx :eax
- IMUL
r16 → 16bit
r32 → 32bit
r/m16 → 16bit 레지스터
r/m32 → 32bit 레지스터
imm8 → 8bit 메모리 피연산자
imm16 → 16bit 메모리 피연산자
imm32 → 32bit 메모리 피연산자
ex) 16bit 형식
IMUL r16 , r/m16 → 16비트 형식에서 16비트 레지스터
IMUL r16 , imm8
IMUL r32, r/m16
IMUL r32, imm16
→ 연산결과가 Destination 레지스터 크기보다 크다면 OF, CF가 세트된다.
MOV (Move) Source에서 Destination으로 데이터 복사 ex) MOV Destination, Source
MOV reg, regMOVS (Move String) Source에서 Destination으로 데이터 복사 ex) MOVS reg, reg MOVSB, MOVSW, MOVSD SI or ESI레지스터에 의해 지정된 메모리주소의 내용을 DI or EDI 레지스터에 의해 지정된 메모리 주소로 복사.
DF(방향플래그)가 1로 세트되어 있으면, ESI와 EDI 는 복사시 감소
DF가 0으로 세트되어있으면, ESI와 EDI는 복사시 증가MOVSB : Byte 단위로 복사
MOVSW : Word 단위로 복사
MOVSD : Dword 단위로 복사MOVSX (Move with Sign-Extend) BYTE나 WORD 크기의 피연산자를 WORD나 DWORD 크기로 확장하고
부호는 그대로 유지ex) MOVSX reg32, reg16
reg16을 확장하여 reg32에 복사MOVZX (Move with Zero-Extend) BYTE나 WORD 크기의 피연산자를 WORD나 DWORD 크기로 확장하고
남은 비트는 0으로 채움ex) MOVZX reg32, reg16
reg16을 확장하여 남은 비트를 0으로 채우고 reg32에 복사
728x90반응형'> Information Security > Reverse Engineering' 카테고리의 다른 글
Crack Me 문제유형 (0) 2011.01.05 upx(실행파일압축) 가 packing 하는 원리 (0) 2010.11.17 Tool - PEiD (0) 2010.11.17 Process & Thread (0) 2010.07.13 레지스터 (0) 2010.07.01