반응형

Step 9: Shared code: (PW=31337157)

This step will explain how to deal with code that is used for other object of the same type


Often when you've found health of a unit or your own player, you will find that if you remove the code, it affects enemies as well.

In these cases you must find out how to distinguish between your and the enemies objects.

Sometimes this is as easy as checking the first 4 bytes (Function pointer table) which often point to a unique location for the player, and sometimes it's a team number, or a pointer to a pointer to a pointer to a pointer to a pointer to a playername. It all depends on the complexity of the game, and your luck


The easiest method is finding what addresses the code you found writes to and then use the dissect data feature to compare against two structures. (Your unit(s)/player and the enemies) And then see if you can find out a way to distinguish between them.

When you have found out how to distinguish between you and the computer you can inject an assembler script that checks for the condition and then either do not execute the code or do something else. (One hit kills for example)

Alternatively, you can also use this to build a so called "Array of byte" string which you can use to search which will result in a list of all your or the enemies players

In this tutorial I have implemented the most amazing game you will ever play.

It has 4 players. 2 Players belong to your team, and 2 Players belong to the computer. 

Your task is to find the code that writes the health and make it so you win the game WITHOUT freezing your health

To continue, press "Restart game and autoplay" to test that your code is correct



Tip: Health is a float

Tip2: There are multiple solutions



파파고번역

##############################################################################

9단계: 공유 코드: (PW=31337157)
이 단계에서는 동일한 유형의 다른 개체에 사용되는 코드를 처리하는 방법을 설명한다.

종종 당신이 유닛이나 당신 자신의 플레이어의 건강을 발견했을 때, 당신은 코드를 제거하면 적에게도 영향을 미친다는 것을 알게 될 것이다.
이런 경우, 당신은 당신의 대상과 적들의 대상을 구별하는 방법을 알아내야 한다.
때로는 플레이어의 고유한 위치를 가리키는 첫 번째 4바이트(기능 포인터 테이블)를 확인하는 것만큼 쉽고, 때로는 팀 번호 또는 플레이 이름에 대한 포인터에 대한 포인터에 대한 포인터도 있다. 이 모든 것은 게임의 복잡성과 당신의 운에 달려있다.

가장 쉬운 방법은 쓰기를 찾은 코드에 맞는 코드를 찾은 다음 해부 데이터 기능을 사용하여 두 구조와 비교하는 것이다. (당신의 부대/선수와 적) 그리고 그들을 구별할 수 있는 방법을 찾을 수 있는지 알아보세요.
사용자와 컴퓨터를 구별하는 방법을 알게 되면 상태를 확인한 다음 코드를 실행하지 않거나 다른 작업을 수행하지 않는 조립자 스크립트를 주입할 수 있다. (예를 들어, 한 번의 히트곡으로 인해 사망)
또는 이것을 사용하여 모든 또는 적들의 목록을 검색하는 데 사용할 수 있는 소위 "바이트의 배열" 문자열을 만들 수도 있다.
이 튜토리얼에서 나는 네가 할 수 있는 가장 놀라운 게임을 실행했다.
그것은 4명의 플레이어가 있다. 2명의 플레이어는 당신의 팀에 속해있고, 2명의 플레이어는 컴퓨터에 속해있다.
당신의 임무는 당신의 건강을 동결시키지 않고 당신이 게임에서 이기도록 하는 것이다.
계속하려면 "게임 다시 시작 및 자동 실행"을 눌러 코드가 올바른지 테스트하십시오.


팁: 건강은 유동적이다.
팁2: 여러 가지 솔루션이 있음


#########################################################################################


같은 구조체로 생성되어진 객체가 같은함수를 사용할때 코드 수정을 통해 원하는 결과를 얻을수 있도록 할수있다.

포인터를 찾아 동결시키는 방법을 사용해도 될거같지만 여기서는 코드인젝션을 통해 문제를 해결하라고 되어있다.

먼저 각 캐릭터들 health를 바꿔주는 부분을 찾아보자

찾은주소에서 f6을 눌러 해당주소에 어떤것이 쓰고있는지 찾아보면 

movess [rdx+08], xmm0

rdx+08에 헬스값을 담고있는것을 볼수있다.

나머지 캐릭터들도 찾아보면

모두 동일하게 접근하는 모습을 볼수있다.

즉 구조체시작부분에서 8만큼 떨어진 부분에 health가 저장되어있다는것을 알수있다.

이제 구조체를 살펴보자.

찾아낸 주소에서 바로위 좌측에 있는  memory view라는 버튼을 클릭해보면 메모리를 볼수있다.

여기서 tools의 dissect data/structures라는 툴을 사용하자.

먼저 찾아낸 주소에서 8을 빼서 넣어주어 구조체의 시작 부분의 주소를 입력하고 Structures->Define new structure로 들어가서 ok를 눌러주면 구조체를 볼수있다.

그뒤 캐릭터를 추가할때는 file->add extra address를 통해 추가할수있다.

4개의 캐릭터를 모두 추가해보면 player인 dave와 eric은 오프셋이 14일때 1의 값을 가지지만

hal과 kitt는 2의 값을 가진다는 것을 알수있다.

이제 코드 인젝션을 통해 [rdx+14]의 값이 1이면 health를 감소시키는 함수를 실행시키지 않고 건너뛰도록 만들어주자.

다시 찾은주소에서 f6을 눌러 이번에는 show disassembler를 통해 tools->auto assemble로 들어가  template->code injection을 이용하자

newmem:이라는 부분에 우리가 넣을 코드를 추가해주면된다.

cmp [rdx+14],1

je exit 

라는 코드를 삽입해준다.

[rdx+14]가 1일때는 즉 아군일때는 exit로 건너 뛰는 구문이다.

이렇게 수정해주고 execute를 해준뒤 autoplay를 해보면 hal과 kitt만 health가 다는걸 볼수있다.

튜토리얼은 모두 끝났다. 이제 튜토리얼 게임으로 넘어가보자

 


 




반응형

'보안 > 치트엔진' 카테고리의 다른 글

Cheat Engine 튜토리얼 게임 step1,2간단후기  (0) 2020.02.16
Cheat Engine 튜토리얼 8번  (0) 2020.02.16
Cheat Engine 튜토리얼 7번  (0) 2020.02.02
Cheat Engine 튜토리얼 6번  (0) 2020.02.02
Cheat Engine 튜토리얼 5번  (0) 2020.02.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기