치트엔진 튜토리얼 9 (64bit)
Cheat Engine Tutorial (64-bit) Step 9
치트엔진 튜토리얼 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 주소를 찾아 줍니다
여기까지 왔으면 " 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 체력만 감소하여 게임을 승리 할 수 있습니다.