HackChang

[Cheat Engine Tutorial] 치트엔진 튜토리얼 6번 문제 풀이 본문

W4RG4M3/R3V3RS1NG

[Cheat Engine Tutorial] 치트엔진 튜토리얼 6번 문제 풀이

HackChang 2020. 7. 7. 17:56

치트엔진 튜토리얼 6

이제부터 문제 난이도가 조금 있는 편이다.

우선 이번 문제는 포인터관련 문제인데

튜토리얼을 진행하면서 프로그램을 껏다키고 다시 진행한 경우가 있을 것이라고 생각된다.

그럴 때마다 값을 미리 구해서 주소목록에 두었더라도 벨류값을 똑같이 수정해도 바뀌지 않는 것을 본 적이 있을 것이다.

포인터는 이러한 문제를 해결하고, 다시 문제를 풀게될 경우도 벨류를 수정하면 계속 적용할 수 있다.

자세히 공부하지 못하고, 글을 적는 것이기 때문에 설명이 부족할 수 있다..

우선 진행해보도록 하겠다.

 

튜토리얼 프로그램의 벨류를 검색했다.

전에 풀던 문제들과 동일하게 스캔하여 값을 줄이도록 하겠다.

 

값을 주소목록으로 내려 문제에서 요구하는대로 5000으로 바꾸도록 하겠다.

 

 

벨류를 5000으로 변경했지만 next가 활성화되지 않는 것을 볼 수 있고,

여기서 문제가 요구하는 것은 포인터를 찾아 Change pointer를 눌렀을 때 value가 5000으로 계속 프리징되도록 하는 것이다.

 

아까 찾은 값을 클릭 후 F6을 눌러 어떤식으로 메모리에 쓰이는지 보도록 하겠다.

전에 풀었던 문제와 비슷하게 메모리에 쓰이는 것을 볼 수 있다.

여기서 우리가 봐야될 것은 [edx] 이다.

edx의 해당 주소를 가르키는 것으로 클릭해서 edx의 주소를 보도록 하겠다.

 

01956308이 EDX인 것을 알 수 있고, 엔진에서 스캔해보도록 하겠다.

 

주소를 스캔할 때는 Hex를 꼭 체크 후 스캔을 진행해야 한다.

 

스캔 결과 중 내리다보면 주소가 초록색으로 나타나는 것을 볼 수 있는데

주소가 초록색으로 나오는 것은 static이라는 것이고, 해당 주소가 value가 담기는 것이다.

저 주소를 더블클릭하여 주소목록으로 내리고, 

 

해당 주소부분(00601630)을 더블클릭하여 주소 변경 창을 띄운다.

 

우리가 구하는 것은 포인터이기 때문에 아래 포인터를 체크하고,

아래와 같이 작성한다.

 

여기서 오프셋으로 0을 주는 이유는 위에서 opcode write를 보면 mov [edx],eax 이므로, 0을 주는 것이고,

예를들어 mov [edx+2c],eax라면 오프셋이 2c가 되는 것이다.

사진에서 보면 벨류값이 649로 나오는 것을 볼 수 있고, 튜토리얼 프로그램에서 봤던 벨류와 일치하는 것을 알 수 있다.

OK를 누르고 엔진 주소목록을 보도록 하자.

 

우리는 5000으로 벨류를 프리징시켜야 하기 때문에 벨류만 5000으로 바꾸면 되는 것이 아니고,

해당 벨류부분이 16진수로 나타나기 때문에 계산기를 통해 10진수 5000을 16진수로 바꾸어 벨류를 수정해야 한다.

벨류를 수정 후,Active부분의 체크박스를 프로즌체크하여 값을 고정시켜야 한다.

 

Change pointer를 눌러도 값이 5000으로 프리징되어 Next가 활성화된 것을 볼 수 있다.

Comments