[리버싱 기초]어셈블리어

jhyoonzi
|2017. 6. 16. 23:35

PUSH -> 스택에 값을 저장



PUSH EAX //스택에 EAX값을 넣는다.

PUSH 5   //스택에 5를 넣는다



POP-> 스택의 끝에 저장된 값을 가져온다.


POP EAX //스택에서 EAX값을 가져온다.

POP 5   // 스택에서 5를 가져온다.










MOV -> 지정한 값을 지정한 곳에 넣어주는 역할



MOV 목적지, 소스

MOV EAX,EBX //EBX에 잇는값을 EAX에 넣는다.


MOV명령어의 주의점


1.목적지와 소스는 같은 크기여야한다.

2.목적지와 소스는 모두 피연산자 일 수 없다.

3.즉시값은 세그먼트 레지스터로 이동 될 수 없다. 



LEA -> 특정 변수의 주소를 옮기는것입니다.



LEA int long 을 예로든다면


long을 int로 주소를 넣는 명령어 입니다.



INC -> INC는 값을 1을 증가시켜줍니다.



INT EAX // EAX를 1증가 시켜준다.



DEC -> 값을 1 감소시켜줍니다.


DEC EAX  // EAX를 1 감소 시켜준다.



CALL -> 함수를 호출하는 명령어. 스택에 리턴 주소를 PUSH한 뒤 바로 뒤의 주소 값으로 점프


CALL 주소값 // 주소값 함수 실행

CALL ECX    // ECX로 저장된 주소로 이동 및 실행


RET -> 함수 내부에서 다시 원래 코드로 돌아오는 명령어 복귀주소로 돌아옴


CALL SUM   //SUM 의 주소를 호출하고

 RET      // 복귀 주소로 다시 돌아옴



CMP -> 두연산자를 비교하는 역할을 합니다.


CMP A,B //A와 B를 비교합니다.



JMP -> 원하는 코드로 점프를 뛸 수 있다.


JMP 0xbfffffff 이면 0xbfffffff 의 주소로 점프하는 것입니다.


'ETC' 카테고리의 다른 글

gdb 명령어  (0) 2017.06.27
[리버싱 기초]레지스터  (0) 2017.06.16
FTZ 서버 구축(해커스쿨)  (0) 2017.05.28
랜섬웨어 와 예방법  (0) 2017.05.15
쉘 이란? [Linux]  (0) 2016.12.31