리버싱의 기본 어셈블리어

m0ng·2025년 4월 8일

Reversing

목록 보기
1/1

데이터 이동 명령어

명령어설명
MOV데이터 이동 (복사)
XCHG두 피연산자 값을 교환
LEA주소를 계산하여 레지스터에 저장 (Load Effective Address)
PUSH스택에 값 저장
POP스택에서 값 꺼냄

산술 명령어

명령어설명
ADD덧셈
SUB뺄셈
INC1 증가
DEC1 감소
MUL곱셈 (부호 없음)
IMUL곱셈 (부호 있음)
DIV나눗셈 (부호 없음)
IDIV나눗셈 (부호 있음)
NEG부호 반전 (음수로 만듦)
CMP비교 (결과는 플래그로 저장됨)

논리/비트 명령어

명령어설명
AND비트 AND
OR비트 OR
XOR비트 XOR (같으면 0, 다르면 1)
NOT비트 반전
SHL왼쪽 시프트 (곱셈 효과)
SHR오른쪽 시프트 (나눗셈 효과)
SAR부호 유지하며 오른쪽 시프트
ROL왼쪽으로 순환 시프트
ROR오른쪽으로 순환 시프트

제어 흐름 명령어

명령어설명
JMP무조건 점프
JE / JZ비교 결과가 0일 때 점프 (같음)
JNE / JNZ비교 결과가 0이 아닐 때 점프 (다름)
JG / JNLE크다 (signed)
JL / JNGE작다 (signed)
JGE크거나 같다
JLE작거나 같다
JC캐리 플래그가 설정되면 점프
JNC캐리 플래그가 없을 때 점프
CALL서브루틴 호출
RET서브루틴 복귀
LOOP카운트 레지스터가 0이 될 때까지 루프

스택 / 함수 관련

명령어설명
CALL함수 호출 (주소 스택에 저장 후 점프)
RET함수 복귀
PUSH스택에 값 저장
POP스택에서 값 꺼냄
ENTER함수 진입 시 스택 프레임 설정
LEAVE함수 종료 시 스택 프레임 해제

자주 쓰는 레지스터

레지스터설명
EAX누산기 (연산 결과 저장)
EBX베이스 레지스터
ECX카운터 레지스터 (루프 등)
EDX데이터 레지스터
ESI소스 인덱스
EDI목적지 인덱스
ESP스택 포인터
EBP베이스 포인터 (스택 프레임)
EIP명령어 포인터 (다음 명령어 주소)
FLAGS상태 플래그 레지스터

0개의 댓글