[7편] 치트엔진 튜토리얼 - Step 7 (Code Injection)
치트엔진 튜토리얼 실행
우선 치트엔진 튜토리얼을 하기 위해서, 치트엔진과 튜토리얼 프로그램을 켜보도록 하겠습니다.

치트엔진을 킨 상태에서 Help-> Cheat Engine Tutorial (64-Bit) 클릭
치트엔진 튜토리얼 - STEP 6
우선, 아래와 같은 사진의 프로그램이 실행되었다면 Process Attach를 해보도록 하겠습니다.

치트엔진 튜토리얼 화면
여러가지 프로세스 중에서 아래 사진과 같이 Tutorial-x86_64 를 Open 해 줍니다.

Process List 화면
STEP 7 설명
Health의 값은 <Hit Me>버튼을 누르면 1씩 감소합니다.
1씩 감소하게 되는 이 버튼의 기능을 Code Injection 이라는 치트엔진 기능을 사용하여
어셈블리 코드를 삽입해서 <Hit Me> 버튼을 클릭하였을 때 2씩 증가하게 만드는 것이 목표입니다.

우선 언제나 그렇듯이 Health의 Address를 찾아줍니다
100 입력 후 Frist Scan

Hit me 버튼 클릭

99입력 후 Next Scan

검색된 주소를 테이블로 옮겨주세요

테이블로 옮긴 주소를 우클릭 후 Find out what writes to this address 를 클릭해줍니다
(어떤 어셈블리어 명령어가 이 주소에 써졌는지(작성되었는지) 확인할 수 있는 기능입니다)

어떤 어셈블리어가 이 주소에 쓰였는지 확인을 하기 위해서 Hit me버튼을 클릭해줍니다

Hit me 버튼을 클릭해주면 아래 사진과같이 한 어셈블리어 명령어가 우리가 찾은 주소에 사용되었음을 알 수 있습니다

Sub명령어
Sub명령어는 레지스터 값들을 뺄셈 연산하는 명령어입니다
아래 예제에서는 EAX에서 01만큼 뺄셈한 결과를 EAX에 저장한다는 뜻이 됩니다
sub EAX, 01 // EAX에 있는 숫자를 01만큼 뺄셈합니다.
sub ESI, 05 // ESI에 있는 숫자를 05만큼 뺄셈합니다
다시 튜토리얼로 돌아와서,
작성된 어셈블리어 명령어를 클릭해 준 후에 Show disassembler 버튼을 클릭해서 메모리뷰어에 들어가줍니다

이후 Tools -> Auto Assemble 순서대로 클릭해줍니다

Auto Assemble 창에서 Template -> Code Injection을 클릭해줍니다


여러 주소들 중에서 sub명령어를 add로 변경하고 맨 뒤에 숫자를 02로 수정해준 후 Excute버튼을 클릭해주세요


Excute버튼까지 정상적으로 눌러주셨으면,
Hit me 버튼을 누를 때 숫자가 2씩 증가하시는 것을 볼 수 있습니다
