본문 바로가기

Reverse Engineering

1. 전역변수 출력 어셈블리어 코드

 

 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지

 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다.


 

 

 

include <stdio.h>


int gv;


int main()

{

gv = 2;


printf("%x ", gv);

return 0;

 

 

전역변수 출력 어셈블리어 코드

 

MOV DWORD PTR DS:[gv],2

 

 

[발췌-수정]

전역 변수는 모든 함수에서 사용할 수 있다. 어셈블리어를 보면 전역 변수는 지역 변수와 다르게 데이터 세그먼트 위치에 저장한다.

올리디버거에서 MOV DWORD PTR DS:[gv],2 명령어가 표시된다.

전역 변수 gv의 정확한 메모리 위치(013113EE)가 표시된다. 이와 같이 전역 변수로 선언할 경우 EBP 레지스터가 아닌

특정 메모리 주소에 저장된다. 따라서 전역 변수는 하나의 함수가 아닌 모든 함수에서 사용할 수 있다.

전역 변수 gv의 메모리값은 윈도우 보안정책에 의해 실행 때마다 바뀔 수 있다.