ASLR
ASMR 아니고아니고!
왜 계속 메모리를 보는데 주소가 바뀌는 것인가??
이러한 현상은 ASLR 이라는 것 때문에 발생하게 됩니다.
ASLR 설명 전에 메모리 변조에 대해 잠시 짚고 넘어가겠습니다.
메모리변조??? 메모리해킹?!?
다른 의도는 없는 순수한 설명을 위하여 사용합니다. :)
예로써 대부분 RPG게임 속에서 존재하는 돈 입니다.
저 돈이라는 값은 어떠한 메모리의 주소안에 16진수 형태로 들어가 있을 것입니다.
게임상의 저 돈의 주소가 동적이 아니라 고정으로 되어있다고 생각해보세요.
돈의 주소만 알아낸다면 메모리를 변조하여 돈을 변경할 수 있지 않을까요?
어떻게 진행되는지 볼까요?
Visual Studio 2013에서 임의주소 사용 하지 않음으로 설정 후 실습합니다.
Money라는 변수에는 현재 300이 들어있습니다.
메모리에도 10진수 300을 16진수로 변경한 0x12c 들어있네요.
( 거꾸로 들어간 것은 Little Endian 참조)
Money 가 위치한 주소는 0x0019FF20 입니다.
주소를 알았으니 그 주소에 값을 999999으로 변경해볼까요?
어떤가요?? Money 변수의 값이 999999 으로 변경 되었죠??
이것과 유사한 방법들이 메모리 해킹입니다..
또한 이러한 것을 예방하기 위해 ASLR 입니다.
그래서 ASLR이 먼데??
알고나니 별거 없죠?? 네 별거없습니다. ;(
임의 주소 사용 봉인 해제 해봅시다 ( VS++2013 )
메모리를 만지거나 포인터 실습을 진행 하실때는
임의 기준 주소를 해제하시고 실습진행하시면 됩니다.
'훈, IT 공부 > C,C++,MFC' 카테고리의 다른 글
[독하게C]함수에 대한 기본이론과 사용 주의점!! (feat.전역변수) (0) | 2018.01.18 |
---|---|
헝가리안 표기법이란 (0) | 2018.01.04 |
[실습코딩] 정렬 코드화 하기 ( 버블, 선택, 선택으로 알려진 버블) (0) | 2018.01.01 |
[실습코딩] 지그재그 숫자 찍어내기 (0) | 2017.12.30 |
[실습코딩] 피라미드 별찍기 (0) | 2017.12.29 |
댓글