치트엔진/사용 가이드

[치트엔진] 벽 뚫기 만드는법 Ultimap 활용

cp_good: 2023. 1. 11. 05:17
반응형

벽 뚫기는 충돌과 관련이 있습니다.
일반적으로 사용되는 방법은 좌표를 찾아 충돌함수를 찾는 방법이 있던데 편하게 치트엔진 기능인 Ultimap을 이용해 찾아보겠습니다.

Ultimap은 일반 스캔과 달리 값보다는 실행된(또는 실행되지 않은) 코드를 찾을 수 있는 기능입니다.

 


사용 전 설정

 

  • DBVM 사용을 해야 합니다.
    (Intel ix 6xxx 이상의 CPU나 AMD CPU는 DBVM이 필요 없는 Ultimap2도 사용하는 것 같습니다.)
  • Use kernelmode debugger을 활성화해야 합니다.
  • 추가 고급 설정


1. 설정 -> Extra -> 전부체크

 

전부 체크

 

2. 설정 -> Debugger Options -> Use kernelmode debugger 활성화 후 체크

Use kernelmode debugger이 처음에는 비활성화돼 있습니다.

Make possible을 누르고 재부팅하면 활성화가 됩니다.

 

활성화
체크

 

 


Ultimap 사용

 

1. 프로세스를 잡아주고 Memory View -> Tools -> Ultimap 선택

 

 

2. Start를 누른 후 Banch targets에 숫자가 0이 아닌지 확인 -> Code did not get executed 클릭 -> 필터 된 코드 확인

 

오른쪽에 있는 Last fiter results 옵션으로 코드를 찾습니다.

Code did not get executed                            : 코드가 실행되지 않았음

Code has been executed                              : 코드가 실행되었음

Filter out routine(s) that where not CALL'ed : 호출되지 않은 루틴 거르기

Filter out return from RET's                           : RET에서 반환된 곳 거르기

Filter out routine(s) where callcount is NOT : callcount가 아닌 루틴 거르기

Filter out routines not in a specific module    : 특정모듈 루틴 거르기

 

Start -> Code did not get executed
필터된 코드 확인

 

3. 게임에서 특정 코드를 실행시켜 필터링해 줍니다.

저희는 벽 충돌 루틴을 찾기 위해 벽에 부딪혀 줍니다.

 

벽에 부딪히면 벽 충돌 처리 루틴이 실행됐으니 Code has been executed 클릭

벽에 부딪히지 않고 Code did not get executed 클릭

반복

 

 

4. 반복하면 left에 필터링된 코드가 얼마 안 남았을 겁니다.

그럼 Show matching routines을 클릭해 테이블(파란색 박스)에 루틴들을 올려줍니다.

 

필터링된 코드들

 

5. 필터링된 코드 중 충돌처리 함수를 찾습니다.

 

찾는 방법은 jmp, je, jne 같은 점프문들을 nop 처리하거나, 조건점프를 반대로 하면 됩니다. (예시) je -> jne)

저는 nop처리로 찾았습니다.

Memory View를 열고 필터링된 루틴을 더블클릭하면 코드가 보입니다.

 

어썰트큐브 충돌처리는 jmp로 돼있네요, nop처리해 주면

 

코드 찾아서 nop 처리

 

잘 뚫리네요.

 

반응형