본문 바로가기

Memory Hacking

치트엔진 - tutorial step 6 포인터!

반응형

치트엔진을 이용해

 

리버싱에서의 포인터를 실습해본건 처음이다.

 

가장 기본적인 포인터 구조는 [ 와 ] 사이에 존재

 

[ 와 ] 에는 주소값이 들어간 레지스터가 들어간다.

 

edx라든지..

 

아마 edx가 데이터 저장용 레지스터 이므로 다른 레지스터는 들어가지 않을 것 같다.

 

( 리버싱 경험이 부족 .. )

 

step - 6 에서 edx는 주소값 (01866950)을 가지고 있었고

 

 

 그 주소의 eax 연산 결과를 저장했다.

 

문제에 Change Pointer라는 버튼이 있고,

 

버튼을 누르면 값의 주소가 바뀌게 되는데,

 

이렇게 되면, 값을 고정시켜도 주소가 바뀌기 때문에

 

값의 주소를 가리키는 포인터의 주소값을 찾아서

 

주소의 값을 고정시켜 줘야한다.

 

문제에서는 단순히 주소값이 10씩 올라가는 로직이였으므로 맞추기는 쉬웠다.

 

주소 검색 할 때 hex에 체크를 하고 검색을 한다.

 

edx 값인 01866950 을 검색해서 그 값을 가리키는 주소인 005FC630을 찾아낸다.

 

이 005FC630 주소 값이 포인터의 주소가 된다.

 

 

 

 

005FC630 --> 018669B0[edx의값] = value 이런 식이다.

 

올리디버거로 봤다고 치면,

 

로직은 10씩 주소값이 올라가면서 그 주소안에 저장되는 값은

 

 change value를 해서 나오는 랜덤값이 저장되게 된다.

 

참고

 

해석해도 포인터가 어떻게 쓰이는지 잡히지않아서 인터넷 블로거의 글을 참고했다.

 

http://extr.tistory.com/10

 

반응형