본문 바로가기
CheatEngine/튜토리얼

[9] 치트엔진 튜토리얼 9 (64bit)

by namespace__ 2024. 6. 9.

치트엔진 튜토리얼 9 (64bit)

Cheat Engine Tutorial (64-bit) Step 9


치트엔진 튜토리얼 Step 9 입니다.

Cheat Engine Tutorial Step 9


이 단계에서는 같은 유형의 다른 객체에 사용되는 코드를 다루는 방법을 설명합니다.

 

유닛의 체력 또는 플레이어의 체력을 찾으면,

이를 제거할 때 적에게도 영향을 미칠 수 있습니다.

이를 해결하려면 자신과 적의 객체를 구분하는 방법을 찾아야 합니다

 

자신과 적의 구조를 비교하여 구분할 수 있는 방법을 찾습니다.

구분 방법을 찾으면 어셈블리 스크립트를 주입하여 조건을 체크하고

코드를 실행하지 않거나 다른 동작을 수행하도록 합니다.

 

자신과 적의 구조체를 파악 할 줄 알아야 합니다

아래 주소로 이동해서 학습 하세요

https://configwan.tistory.com/12

 

치트엔진 구조체 보는 방법

치트엔진 튜토리얼 9 를 하기위해서 구조체 알아보는 방법 입니다 " Player1 , Player2 , Player3 , Player4 "에 관련되어 있는 값을 알 수 있는 구조체를 알아 볼겁니다 " Player1  Dave " 의 체력 값을 스캔

configwan.tistory.com

 

 


 - Step 9 완료 조건 -

Dave , Eric 피는 감소 하지 않고 
HAL, KITT 피만 감소하여 게임을 이겨야 합니다

 

 


 

체력(Float)을 스캔하고 체력의 값을 감소하는

opcode 주소를 찾아 줍니다

Dave Helth 값 스캔
Find Out what writes to this address 디버깅

여기까지 왔으면  " Show disassembler " 클릭

 

이 단계 까지는 이전의 튜토리얼을 완료 하였으면 
쉽게 진행이 되어야 합니다


 

Memory viewer 에서 
Tools > Auto Assemble 클릭

 

 

Template > Code injection  클릭
기본적으로  " Cheat Table framework code "도 추가 해주셔야 합니다 .


 

Auto Assemble를 사진과 같이 작성 해줍니다

- Auto Assemble script -

[ENABLE]
alloc(newmem,2048,"Tutorial-x86_64.exe"+2F25D)
label(returnhere)
label(originalcode)
label(exit)

newmem:
originalcode:
cmp byte ptr [rbx+19],'D' // 닉네임의 앞글자 'D'를 구분
je exit					  // 같으면 exit로 이동
cmp byte ptr [rbx+19],'E' // 닉네임의 앞글자 'E'를 구분
je exit					  // 같으면 exit로 이동
movss [rbx+08],xmm0

exit:
jmp returnhere

"Tutorial-x86_64.exe"+2F25D:
jmp newmem
returnhere:

[DISABLE]
//원본 코드 
dealloc(newmem)
"Tutorial-x86_64.exe"+2F25D:
movss [rbx+08],xmm0

newmem 부분 코드 설명

newmem:
originalcode:
cmp byte ptr [rbx+19],'D' // 닉네임의 앞글자 'D'를 구분
je exit                   // 같으면 exit로 이동
cmp byte ptr [rbx+19],'E' // 닉네임의 앞글자 'E'를 구분
je exit                   // 같으면 exit로 이동
movss [rbx+08],xmm0

 

cmp byte ptr [rbx+19],'D'

비교문 cmp를 사용

[rbx + 19(Offset) ] 'D'인지 확인

je exit

값이 'D'라면 exit 라벨로 점프

 

같은 방식으로,

cmp byte ptr [rbx+19],'E'는

'E'인지 확인하고, 값이 같으면 exit로 점프

 

닉네임의 첫 글자가 'D' 또는 'E'가 아니라면,

movss [rbx+08],xmm0 명령을 실행하여

rbx+08 주소에 xmm0 레지스터의 값을 이동합니다.


 

Auto Assemble script 를 작성하고 
File - Assing to current cheat table

 

Dave , Eric 체력은 감소하지 않고

HAL, KITT 체력만 감소하여 게임을 승리 할 수 있습니다.


다른 치트엔진 튜토리얼 보러가기