'리버싱'에 해당되는 글 2건

CALL
ex) CALL 인자1(주소값)

-> 인자1 을 불러와 실행한다.

-> 대부분 함수를 호출한다.


PUSH

-> 스택을 쌓는다.


POP

-> 스택을 빼낸다.


MOV
ex) MOV 인자1, 인자2

-> 인자2의 값을 인자1로 넣는다.


ADD
ex) ADD 인자1, 인자2

-> 인자1 + 인자2 값을 인자1로 대입.


SUB
ex) SUB 인자1, 인자2
-> 인자1 - 인자2 값을 인자1로 대입.


INC
ex) INC 인자1
-> 인자1에다가 1을 더한다.


DEC
ex) DEC 인자1
-> 인자1에다가 1을 뺀다.


CMP
ex) CMP 인자1, 인자2
-> 인자1과 인자2를 비교하는 역할을 한다.
-> CMP가 나올땐 항상 JMP가 따라나온다.


JMP
-> 특정 지역으로 이동(점프) 한다.
-> CMP 비교 값을 보고 점프 하거나 점프하지 않는다.

-> JMP의 종류

JE : 값이 같으면 점프해라.
JNE : 값이 다르면 점프해라.
JG : 왼쪽 인자의 값이 오른쪽 인자보다 크면 점프해라.
JL : 왼쪽 인자의 값이 오른쪽 인자보다 작으면 점프해라.
JNG : 왼쪽 인자의 값이 오른쪽 인자보다 크지 않으면 점프해라.
JNL : 왼쪽 인자의 값이 오른쪽 인자보다 작지 않으면 점프해라.
JGE : 왼쪽 인자의 값이 오른쪽 인자보다 크거나 같으면 점프해라.
JLE : 왼쪽 인자의 값이 오른쪽 인자보다 작거나 같으면 점프해라.


AND
ex) AND 인자1, 인자2
-> 인자1, 인자2 값을 2진수로 바꾸어서 and 연산을 한다.


OR
ex) OR 인자1, 인자2
-> 인자1, 인자2 값을 2진수로 바꾸어서 or 연산을 한다.


XOR
ex) XOR 인자1, 인자2
-> 인자1, 인자2 값을 2진수로 바꾼뒤
   두개의 비트중 하나라도 1일경우 1 이되고
   두개의 비트가 1일경우 0 이되고
   두개의 비트가 0일경우 0 이된다.


NOT
ex) NOT 인자1
-> 인자1의 값을 2진수로 변환한뒤 1은0, 0은1로 바꿔준다. 

블로그 이미지

토유

개발일지

,

스택 프레임이란?


ESP가 아닌 EBP 레지스터를 사용하여 로컬 변수, 피라미터 복귀 주소에 접근하는 기법이다. ESP 레지스터의 값은 수시로 변경되기 때문에 정확한 위치를 참고 하기 위해 ESP값을 EBP에 저장후 사용하는 것이다.


스택 프레임의 기본 구조.



스택 프레임 형성 과정


스택 버퍼오버플로우 공격이 가능한 코드를 하나 짜서 예를 들어보자






▼ 어셈블리



사진을 보면 스택프레임 형성 기본 구조들을 볼 수 있다.




'해킹/보안' 카테고리의 다른 글

SSL(Secure Socket Layer)이란?  (0) 2015.09.23
랜섬웨어란?  (0) 2015.09.08
방화벽 이해  (0) 2015.08.27
DHCP Snooping 이해  (0) 2015.08.26
Buffer Overflow(버퍼 오버플로우)공격  (0) 2015.08.26
블로그 이미지

토유

개발일지

,