19. 간단한 게임 치트 도전 - 무반동
본문 바로가기
Reversing & Cheat Engine

19. 간단한 게임 치트 도전 - 무반동

by boosting 2024. 3. 4.
728x90

반동 부분을 찾아봅시다

지난 글에서는 총알 개수쪽의 메모리 주변을 이용하여 총속을 찾았습니다.

비슷한 방법으로 반동 부분도 한 번 찾아봅시다.

 

총 쏘는 게임에서 반동 부분이 어떤 식으로 거쳐가는지를 생각해보면

어떤식으로 접근할지 감이 올 거 같습니다.

 

마우스 좌클릭을 누른다 -> 총알이 감소한다 -> 총알이 날아가면서 플레이어는 반동을 겪는다

 

대충 이런식으로 구조가 되어있을거라 생각하면

총알이 감소하는 구간은 저희가 이미 찾았었죠? 그 뒷 부분 명령어들을

좀 봐야할 거 같네요.

 

SCMarine

 

총알을 감소 시키는 명령어 쪽입니다.

이 밑 명령어들 중 총을 쐈을때의 이벤트라 볼 수 있는 반동, 탄 튀는것 등등의 효과를

출력하는 함수가 존재한다고 생각할 수 있습니다.

 

SCMarine

 

살짝 내려다보면 이런식으로 2가지 조건이 있고 호출하는 함수가 2개가 존재하네요.

그렇다면 이 두 함수들 중 반동 관련이 있을거라고 생각해볼 수 있겠네요.

 

 

SCMarine

 

디버깅을 걸어서 봤을 때 2개가 일치하여 점프를 하지 않는걸 확인할 수 있습니다.

일단 비교하는 대상 2개가 무엇인지는 정확하게 모르겠지만 총기 관련임은 확실하죠.

그러면 이 jne 부분을 한 번 jmp 시켜서 함수 2개를 실행시키지 않도록 해보겠습니다.

 

 

 

총속을 적용해놔도 화면 올라가는 현상이 없어졌습니다.

예상한대로 반동 관련 부분이 맞았네요.

 

SCMarine-Win64-Shipping.exe+19FB501 - 48 8B 06              - mov rax,[rsi]
SCMarine-Win64-Shipping.exe+19FB504 - 48 8B CE              - mov rcx,rsi
SCMarine-Win64-Shipping.exe+19FB507 - 48 8B 15 1A728504     - mov rdx,[SCMarine-Win64-Shipping.exe+6252728] { (30024) }
SCMarine-Win64-Shipping.exe+19FB50E - 48 89 5C 24 30        - mov [rsp+30],rbx
SCMarine-Win64-Shipping.exe+19FB513 - 48 8B 98 60020000     - mov rbx,[rax+00000260]
SCMarine-Win64-Shipping.exe+19FB51A - E8 01352D00           - call SCMarine-Win64-Shipping.exe+1CCEA20

 

조금 더 정확히 보자면 위의 call SCMarine-Win64-Shipping.exe+1CCEA20 이 부분이

반동 부분과 연동이 되 있는 구간이긴 합니다. Step 형식으로 디버깅 걸어가다보면

 

SCMarine-Win64-Shipping.exe+1BF51B4 - 48 8D 0C 49           - lea rcx,[rcx+rcx*2]
SCMarine-Win64-Shipping.exe+1BF51B8 - 48 8D 04 CA           - lea rax,[rdx+rcx*8]
SCMarine-Win64-Shipping.exe+1BF51BC - 48 85 C0              - test rax,rax

 

이 구간이 있는데 여기에서 rdx+rcx*8 에 담긴게 그 총의 기본 설정 값인듯 합니다.

 

SCMarine

 

빨간색으로 드래그 해놓은 곳을 바꿔치기해도 반동이 제거 되는것을 볼 수 있었습니다.

이 게임을 해보면 스팀팩이라는게 있는데 이를 먹으면 일정 시간동안 총속과 나의 스피드가

증가하는 걸 확인할 수 있습니다.

 

다음 시간엔 이를 이용하여 스피드 부분을 한 번 찾아보도록 하겠습니다.

728x90