둘둘리둘둘리둘둘리둘둘리둘둘리둘

어셈블리어 연산자 본문

Windows/Reversing

어셈블리어 연산자

dool2ly 2015. 7. 15. 00:03

SUB

 - 빼기, 연산결과 0-> ZF 1


IMUL

 - 부호 있는 곱셈, 부호 비트를 제외하고 연산 후 부호를 붙임


CMP

  - op1,2를 비교, 같으면 ZF = 1


TEST ; Logical Compare 

 - 두 피연산자를 AND연산하여 결과가 0이면 ZF가 1로 세트 됨, 보통 값이 있는지 없는지를 확인할때 사용

ex) if( a )


REP ; Repeat

 - ECX가 0이 될때까지 반복, 시작시 ECX-1


REPNE ; Repeat until not equal

 - ZF가 1로 세트되거나 ECX가 0이 될때까지 반복, 시작시 ECX-1, 보통 SCAS와 같이 쓰임


SCAS ; Scan string

 - AL 또는 AX 또는 EAX와 EDI가 가리키는 메모리 내용 비교후 같으면 ZF = 1, 비교한만큼 EDI증가


STOS ; Store string

 - EAX를 EDI가 가리키는 메모리에 저장, 기록한 크기에 따라 EDI도 증가


SBB ; Subtract with Borrow

 - CF가 있을시 dst = dst - src - CF


MOVSX ; move with signe extend

  - 부호 있는 확장 전송 음수면 확장될때 확장된 공간을 1로 체움


MOVZX ; move with zero extend

  - op1에 op2를 확장전송, op1의 나머지는 0으로 체움


SAR ; Shift Arithmetic Right

  - 오른쪽으로 쉬프트연산 하고 삐져나오는건 CF로 왼쪽 빈공간은 부호비트 복사


SAL ; Shift Arithmetic Left

  - 왼쪽으로 쉬프트 연산 하고 최하위 비트는 0으로 체움


CALL = push eip; jmp func

LEAVE = mov esp,ebp; pop ebp

ret = pop eip, jmp eip

  - eip는 직접 수정 못하지만 궂이 동작을 구분하자면 위와 같음 





unsigned 명령어

JA, JAE, JB, JBE, JNA, JNAE, JNB, JNBE, DIV, MUL


signed 명령어

JG, JGE, JL, JLE, JNG, JNGE, JNL, JNLE, SAR

Comments