Cheat Engine Tutorial-Step8
이번에는 Cheat Engine Tutorial-Step8을 풀어보겠습니다.
이번에는 Tutorial6처럼 포인터에 대한 문제입니다.
Tutorial 6 에서는 포인터가 한번만 이루어졌지만 이번에는
한번만 이루어지는 것이 아닌 여러 개의 다중포인터에 대해서 다루겠습니다.
다중포인터의 개념은 아주 간단합니다. 어떠한 메모리가 데이터를 가리키는 횟수가 여러 번인 것이지요. 이 100이라는 숫자는 다른 포인터를 참조하고 있고 이 포인터도 유동적으로 그런 데이터 변환이 가능하다.
Tutorial 6에서는 1단계 포인터였다면 이번에는 4단계 포인터입니다.
총 4번 참조하였다는 의미이지요.
다음스텝으로 가는 조건은 값을 5000으로 고정되게 하는 것입니다.
한번 풀어보겠습니다
우선 포인터를 찾아보겠습니다.
Value의 주소를 찾았으니 이 주소를 통해 포인터를 따라갑시다.
주소를 입력했더니 값이 뜨지 않습니다. 왜 뜨지 않을까요?
그건 다 이유가 있습니다.
일단은 밑의 리스트의 value를 클릭하고
Find out what writes to this address나 F6을 누릅니다.
F6을 클릭후 창을 띄우고
Change Value를 누르게 되면 값이 찍히게 됩니다.
보시면 은 mov [esi+18], eax을 볼 수 있는데요
eax의 값을 [esi+18]로 이동시킨다는 뜻입니다.
여기에 값이 검색되지 않는 이유가 있습니다.
바로 083D903을 참조하는 주소가 없기 때문입니다.
즉 pointer의 주소는 value의 주소를 참조하고 있지 않고
이 주소 대신에 esi+18을 참조하고 있는 것입니다.
esi를 확인해 보겠습니다.
현재 esi의 값은 다음과 같습니다.
현재 esi의 값인 0183D903에 18을 더하게 되면
value의 주소인 0183D930이 나옵니다.
즉 포인터는 esi값에 세팅되어있는것입니다.
esi주소를 찾아야 포인터가 나오게되는것이죠.
데이터를 찾게되면 값이 하나밖에 없습니다.
이 값이 바로 Step8의 첫 번째 포인터인것입니다.
(Step8 P1 이라고 이름붙이겠습니다.)
이제는 Step8 P1을 참조하고 있는 포인터를 찾아보겠습니다.
이번에는 F6이 아닌 Find out what accesses to this address 나 F5를 누르겠습니다.
이것을 하는 이유는 P2는 P1을 엑세스(접근)하기 때문입니다.
esi에 더해진게 없기 때문에
esi가 그대로 옮겨진 것을 알 수 있습니다.
똑같다는걸 알 수 있지요.
이 주소를 이용해서 찾아보면
이렇게 값이 뜨게됩니다.
이 과정을 반복해주시면 됩니다.
이번에는 P2에서 esi+14 한 것을 esi에 넣어주고 있습니다.
P2도 P3가 참조하고 있는 곳에서 +14를 해줘서 P2로 가게 될겁니다.
리스트 밑에 있는 것은
esi+14한 것을 esi로 옮기고 있기 때문에
위에 있는 cmp dword ptr [esi+14],00
을 클릭하고 거기의 esi를 검색하셔야합니다.
검색하니 또 다른 Pointer가 나왔습니다.
이것은 P3라고 이름붙이겠습니다.
F5을 눌러보겠습니다.
보게되면 이번엔 ESI주소에 + 0C를 해서 P3주소로 갑니다.
또 따라갑시다.
이전에 이걸 조금 쉽게 설명하면 다음과 같습니다.
이렇게 말이죠
이제 따라가보겠습니다.
이전과는 초록색의 주소가 나왔습니다!
초록색 주소는 고정되어있다는 뜻입니다.
이 프로세스를 껐다 키게되면 여기에 있는 List들은 초기화됩니다.
저번처럼 Add Address Manually를 사용하면 다중으로 Pointer가 추가됩니다.
Add Offset을 눌러서 칸을 늘리고
맨 밑의 빈칸에는 가장 마지막 포인터인 P4의 주소를 넣어주시고
아까 연산하였던 숫자들을 넣어줍니다
그리고 OK를 누르면
이런식으로 변수가 추가됩니다.
이 변수를 5000으로 고정시켜주면 NEXT버튼이 활성화 될 겁니다.
이상태에서 Change Pointer를 눌러주면 NEXT 버튼이 활성화 됩니다.
이렇게 말이죠
휴.. 정말 오래걸렸습니다.
가장 오래 걸린 Cheat Engine 풀이 인것 같습니다.
다음시간에는 Cheat Engine-Tutorial 마지막인 Step9을 풀어보겠습니다.