본문 바로가기
리버스 엔지니어링/치트엔진 튜토리얼

[7편] 치트엔진 튜토리얼 - Step 7 (Code Injection)

by leedg 2023. 1. 1.
반응형

치트엔진 튜토리얼 실행

우선 치트엔진 튜토리얼을 하기 위해서, 치트엔진과 튜토리얼 프로그램을 켜보도록 하겠습니다.

치트엔진을 킨 상태에서 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씩 증가하게 만드는 것이 목표입니다.

Step 7 화면

 

우선 언제나 그렇듯이 Health의 Address를 찾아줍니다

100 입력 후 Frist Scan

100 입력 후 First Scan

Hit me 버튼 클릭

Hit me 버튼 클릭

99입력 후 Next Scan

99입력 -> Next scan

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

검색된 주소

 테이블로 옮긴 주소를 우클릭 후 Find out what writes to this address 를 클릭해줍니다

(어떤 어셈블리어 명령어가 이 주소에 써졌는지(작성되었는지) 확인할 수 있는 기능입니다)

주소우클릭 -> Find out what writes to this address 클릭

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

Hit me 클릭

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

sub 라는 어셈블리어 명령어가 우리가 찾은 주소에 작성되었음을 알 수 있습니다


Sub명령어

Sub명령어는 레지스터 값들을 뺄셈 연산하는 명령어입니다

아래 예제에서는 EAX에서 01만큼 뺄셈한 결과를 EAX에 저장한다는 뜻이 됩니다

sub EAX, 01 // EAX에 있는 숫자를 01만큼 뺄셈합니다.
sub ESI, 05 // ESI에 있는 숫자를 05만큼 뺄셈합니다

 


다시 튜토리얼로 돌아와서,

작성된 어셈블리어 명령어를 클릭해 준 후에 Show disassembler 버튼을 클릭해서 메모리뷰어에 들어가줍니다

Show disassembler 버튼 클릭

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

Tools -> Auto Assemble 클릭

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

Template -> Code Injection 클릭
OK버튼 클릭 (이 어셈블리어가 사용된 정확한 주소를 자동으로 치트엔진이 가리켜주는 주소입니다)

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

sub명령어와 맨 뒤에있는 숫자를 02로 수정했습니다(2라 써도 상관없음)

Excute버튼까지 정상적으로 눌러주셨으면, 

Hit me 버튼을 누를 때 숫자가 2씩 증가하시는 것을 볼 수 있습니다

NEXT버튼이 활성화되었습니다!

 

 

해킹 강의 : https://studycodes.tistory.com/16

댓글