벽 뚫기는 충돌과 관련이 있습니다.
일반적으로 사용되는 방법은 좌표를 찾아 충돌함수를 찾는 방법이 있던데 편하게 치트엔진 기능인 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 : 특정모듈 루틴 거르기
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처리해 주면
잘 뚫리네요.
'치트엔진 > 사용 가이드' 카테고리의 다른 글
앱 플레이어 바이트 스캔하는 방법 (루아 스크립트 만들어보기) (2) | 2024.07.13 |
---|---|
GTA5 온라인에서 치트키 활성화해보기 (2) | 2024.07.07 |
캐릭터 좌표 구하는 방법 [게임해킹] (2) | 2022.12.14 |
텔레포트 핵 만드는 법 (치트엔진) (2) | 2022.08.17 |
스킬 쿨타임 해킹하는 법 (치트 엔진) (8) | 2022.08.09 |