Jaeseo's Information Security Story

리버싱 기초 - 기초 명령어 본문

Security Study/Reversing

리버싱 기초 - 기초 명령어

Jaeseokim 2019. 10. 14. 19:59
  • PUSH, POP
    스택에 값을 넣는 것이 PUSH 스택에 있는 값을 가져오는 것이 POP
  • PUSHAD , POPAD
    모든 레지스터를 PUSH 하고 POP 하라는 명령어
    ex) PUSHAD == PUSH EAX, PUSH EBX, PUSH ECX...
  • MOV
    값을 넣어주는 역할
    ex) MOV eax,1 == eax에 1를 넣는 명령어
  • LEA
    LEA는 주소를 가져온다. MOV는 값을 가져온다.
    ex) esp+8 : 0x123456 , *esp+8 : 1234
    LEA eax,esp+8 -> eax == 0x123456
    MOV eax,esp+8 -> eax == 1234
  • ADD
    source 에서 destnation으로 더해라
    ex) ADD source,destnation
  • SUB
    source 에서 destnation으로 빼라
    ex) SUB source,destnation
  • INT
    인터럽트를 발생시키는 명령어
    ex) INT 3 -> DebugBreak() == BreakPoint
  • CALL
    함수를 호출 하는 명령어 CALL 뒤에는 오퍼랜드로 번지가 붙는다.
    함수가 끝난뒤 RET를 통해 CALL 다음 번지로 되돌아온다.
  • INC
    ex) i++
  • DEC
    ex) i--
  • AND, OR, XOR
    비트 연산자 source와 destnation를 연산한다.
    보통 XOR EAX,EAX를 해서 0으로 초기화 하는데 자주 사용.
  • NOP
    아무것도 하지 말라는 명령어이다.
    ex) stolen byte 영역이 EP시작부터 NOP으로 채워져 있다.
  • CMP
    비교하라는 명령어이다.
  • JMP
    점프하는 명령어이다. CMP의 값에 따라 작동 하는지 안하는지 결정되기도 한다.
Comments