Untitled

먼저 치트엔진을 사용하여 게임의 점수가 오르는 부분을 찾아줍니다.

점수가 1점 올랐을 때 1을 찾아주었는데 아직 많은 숫자들이 많아 똑같이 2,3 스캔을 해줍니다.

Untitled

3까지 스캔을 해주었는데 남은 값이 하나가 있다는 것을 볼 수 있습니다.

그러면 바로 이것이 점수를 조정해주는 역할을 하겠죠?

Untitled

이와 같이 주솟값과 코드를 확인해주어 올리디버거로 넘어가줍니다.

Untitled

컨트롤+g로 주솟값을 이동하고 코드를 보면

INC DWORD PTR DS:[EAX*4+ESI+3C]

이 문장은 어셈블리어 코드인데 리버싱 계의 포인터라고 볼 수 있습니다.

4바이트인 EAX 배열이고 여기서 1피와 2피가 점수가 오를 때 EAX 값이 뭔지 확인할 수 있는데 0일 때는 1피의 점수 1일 때는 2피의 점수를 나타냅니다. 또한 ESI+3C는 배열의 0번째 요소를 가르키는 것이라고 해석할 수 있는데 만약 저희가 1피의 점수를 오르게하고 싶으면

INC DWORD PTR DS:[ESI+3C] (배열의 주소가 0*4 즉 0이 되기 때문에 1피의 점수가 오름)

INC DWORD PTR DS:[ESI+3C+4] (배열의 주소가 4 즉 한칸이 되기 때문에 2피의 점수가 오름)

으로 수정해주면 됩니다. 그럼 저는

Untitled

으로 수정 하고 실행을 해보면

뫮먰귃궔궭귙_갏_拒걍艱微뺂( 긹__붎 ) ( PAUSED! ) 2023-02-26 22-54-09.mp4

성공!