[Cheat Engine] Tutorial Level 7 Write-Up

두비니

·

2021. 7. 21. 05:14

 

 


Cheat Engine Tutorial

Level 7


 

 

 

고고

 

Step 7: Code Injection: (PW=013370)
Code injection is a technique where you inject a piece of code into the target process, and then reroute the execution of code to go through your own written code.

In this tutorial you'll have a health value and a button that will decrease your health by 1 each time you click it.
Your task is to use code injection to make the button increase your health by 2 each time it is clicked

Start with finding the address and then find what writes to it.
then when you've found the code that decreases it browse to that address in the disassembler, and open the auto assembler window (ctrl+a)
There click on template and then code injection, and give it the address that decreases health (If it isn't already filled in correctly)
That will generate a basic auto assembler injection framework you can use for your code.

Notice the alloc, that will allocate a block of memory for your code cave, in the past, in the pre windows 2000 systems, people had to find code caves in the memory(regions of memory unused by the game), but that's luckily a thing of the past since windows 2000, and will these days cause errors when trying to be used, due to SP2 of XP and the NX bit of new CPU's

Also notice the line newmem: and originalcode: and the text "Place your code here"
As you guessed it, write your code here that will increase the  health with 2.
An usefull assembler instruction in this case is the "ADD instruction"
here are a few examples:
"ADD [00901234],9" to increase the address at 00901234 with 9
"ADD [ESP+4],9" to increase the address pointed to by ESP+4 with 9
In this case, you'll have to use the same thing between the brackets as the original code has that decreases your health

Notice:
It is recommended to delete the line that decreases your health from the original code section, else you'll have to increase your health with 3 (you increase with 3, the original code decreases with 1, so the end result is increase with 2), which might become confusing. But it's all up to you and your programming.

Notice 2:
In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that happens, you should usually look near that instruction and see the jumps and fix it, or perhaps even choose to use a different address to do the code injection from. As long as you're able to figure out the address to change from inside your injected code.

 

level 7은 코드 인젝션 문제입니다. 코드 인젝션이란, 공격자가 원하는 명령어를 주입하는 공격으로, 말그대로 내가 원하는 코드를 주입시켜 프로그램이 의도하지 않은 동작을 하도록 하는 공격입니다.

현재 hit me버튼은 눌렀을 때 값이 1씩 감소합니다. 현재 목표는 hit me로 2씩 증가하게끔 바꾸는 것입니다.

그럼 일단 항상 그래왔듯이 health를 먼저 찾아줍시다.

 

찾아주고, 이걸 `Find out what writes to this address`를 통해 해당 주소에서 발생하는 어셈블리어를 확인해봅시다.

 

 

그 다음 show disassembler를 통해 디스어셈블 창을 엽시다.

 

 

여기서 Ctrl + A

 

 

그리고 창에서 template > Code Injection

그럼 access하고싶은 주소가 뭐냐고 물어봅니다. 거기에 해당 주소를 입력하면

이렇게 기존 어셈 코드가 뜹니다. 

그래서 다음과 같이 수정해주었습니다.

 

 

execute를 해주고, 성공적이라면

어셈이 성공적으로 바뀐걸 볼 수 있습니당

 

 

 

굳굳

'War Games' 카테고리의 다른 글

[Prompt Injection]  (0) 2023.05.28
[abex' Crackme] crackme2.exe  (0) 2023.04.11
[abex' Crackme] crackme1.exe  (0) 2023.03.16
[Cheat Engine] Tutorial 4~6 Write-Up  (2) 2021.07.20
[Cheat Engine] Tutorial 1~3 Write-Up  (0) 2021.07.19