3장 표준 입출력 도구

C언어 – Inflearn, 독하게 시작하는 C 프로그래밍

 

메모리 검사하는 방법

-메모리를 검사하고 싶은 줄에 마우스 커서를 둔 뒤 F9(디버그->중단점 설정/해제)를 누른다.

-F5로 디버깅 시작한다.

-Alt + 6 또는 디버그 -> 창 -> 메모리 부분을 클릭하여 메모리 창을 연다.

-메모리 주소를 검색창에 직접 szName(메모리 주소 이름)을 입력해도 되고, szName을 메모리 창에 드래그앤드롭 해도 된다.

 

-위 화면에 보이는 cc cc cc 값은 쓰레기값이다.

-F10(프로시저 단위 실행)을 눌러 중단점을 설정해놓은 행이 실행한다.

-아래의 화면처럼 해당 메모리 주소의 값이 “Hello”으로 초기화 된다.

-해당 메모리의 값을 보면 6f 뒤의 00은 null 문자를 의미한다.

-gets_s()함수 추가

-프로그램을 다시 빌드하고 디버그 모드로 gets_s() 함수 부분을 실행한다.

-gets_s() 함수의 입력을 받는 콘솔 창에 teststring 입력

-아래 이미지의 메모리 값을 보면 fe는 gets_s() 함수를 사용하여 들어간 값이다.

-프로그램을 짤 때의 배열 이름은 szName이지만 실제 메모리 주소는 0x0042FE40이다.

-그리고 이 메모리 주소는 프로그램을 실행시킬 때마다 다르게 나온다.

-그 이유는 윈도우7 이상의 운영체제를 쓰면 ASLR(Address Space Layout Randomization) 기능이 기본적으로 들어가 있기 때문이다.

-이 기능을 사용하는 이유는 메모리 위치가 고정되어 있으면 해킹에 노출되기 쉽기 때문이다.

댓글 남기기

Close Menu