[이전글] - 2. Cheat Engine 설치 및 세팅
1. gtutorial-x86_64.exe 와 Cheat Engine을 실행해 놓읍시다.
일단 둘 다 실행시켜 놓으면 다음과 같은 화면이 뜰 것입니다.
Step 1이라는 무슨 영어가 있습니다.
영어로 써져 있지만 번역기를 돌리지 않아도 대충 해석이 가능할 것 같습니다.
5발을 발사하면 재장전을 하는데, 그 재장전동안 저 타깃이 회복을 한다고 합니다.
이 타깃을 부술 수 있는 방법을 찾아보라...라는 말인 것 같네요.
2. 프로그램이 어떻게 동작하는지 살펴봅시다.
키보드 → , ← 버튼을 통해 쏘는 각도를 조절할 수 있고 Space Bar를 통해 발사를 할 수 있습니다.
우선 이 프로그램이 어떻게 짜여있는지 한 번 플레이를 간단하게 해 보도록 합시다.
자 5발 중 4발을 타깃에 맞췄고 체력바가 거의 달기 직전입니다. 그러면 1발만 그냥 더 쏴도 죽지 않을까 하고 쏴봤습니다.
5발째 쐈을 때 모습입니다. 날아가는 동안에 체력을 회복하고 있는 모습입니다.
3. 내 나름대로 해결방안을 생각해 봅시다.
물론 우측 상단에 전구 모양 클릭하면 Cheat Engine 자체에서 기본 가이드를 제공하기는 합니다.
하지만 한 가지만의 해결법만을 모색해 보는 것이 아니라 여러 가지 관점에서 보는 시선을 초반부터
길러보는 게 제일 중요하다고 생각합니다.
그러면 이 프로그램에서 본 현상을 하나하나 뜯어서 생각을 해봅시다.
1. 플레이어는 1발을 쏘면 우측 하단에 숫자가 줄어든다.
2. 플레이어가 5발을 다 쏘면 0이 되는데, 0이 되면 Reloading이라는 대기시간에 들어간다.
3. 플레이어가 Reloading 이라는 대기시간에 돌입했을 때, 플레이어는 탄을 발사할 수 없다.
4. 플레이어가 Reloading 이라는 대기시간에 돌입했을 때, 타깃은 체력을 지속적으로 회복한다.
대충 이렇게 하나의 현상을 잘게 쪼개봤습니다.
그러면 이 타깃을 부술 수 있는 방법도 5가지 방법이 가능할 수 있다는 뜻입니다.
그것을 나열해 보자면 다음과 같습니다.
1. 플레이어가 1발을 쏠 때 우측 하단에 숫자가 줄어들지 않게 해 본다.
2. 플레이어가 5발을 다 쏘면 Reloading이라는 대기시간을 없애본다.
3. Reloading 이라는 대기시간 돌입했을 때도 탄을 발사할 수 있게 해 본다.
4. 타깃의 체력을 낮춘 상태로 시작해 본다.
5. 타깃의 체력 회복을 방해하거나 없애본다.
물론 고난도의 로직으로 짜여 있을 경우 위 5가지 방법 중 안 먹히는 게 있습니다.
하지만 필자는 Cheat Engine이라는 프로그램을 제대로 다뤄보려면 저런 식으로 어떤 현상을
잘게 쪼개서 보는 습관이 꽤 필요하다고 생각합니다.
이 프로그램에 대한 사전 지식이 전혀 없다는 가정하에
처음 시도해 볼 수 있는 방법은 1번째가 될 것입니다.
왜냐하면 숫자가 줄어드는 것은 눈만 정상이라면 누구나 쉽게 캐치를 할 수 있는
변화이기 때문에 처음 시도를 하기에 제일 좋은 방법인 거죠.
만약 이 방법이 안 먹힌다면 다음 경우의 수를 생각을 해야 되기 때문에 위에 서술한
습관을 길러두면 이 프로그램을 다루는 것에 도움이 된다고 말한 것입니다.
자 그러면 전 글에서 서술했던 자동으로 프로세스 타깃을 잡아보시고..
잘 모르시겠다면 전 글을 참고해 주시기 바랍니다.
4-1. 1번의 방법을 해봅시다.
자 보시면 중간 조금 위에 First Scan이라는 버튼이 있고 그 버튼 밑에 제가 숫자 5를 써놨습니다.
여기서 5는 제가 쏠 수 있는 5발의 탄을 의미한다고 생각하시면 될 것 같습니다.
탄을 쏘지 마시고 First Scan을 눌러주세요. 그러면 좌측에 무슨 뭐 많은 게 생길 겁니다.
총 2,364개가 나왔는데요.. 여기서 어떤 게 내 탄환의 개수를 표시해 주는 주소인지 모릅니다.
그렇다고 2,364개를 전부 수정해 보는 것은 너무 미련한 짓이겠죠.
여기서 1발을 쏘면 4발이 될 겁니다. 숫자 5를 지우고 4를 쓰신 후 Next Scan을 눌러주세요.
어...? 아무것도 안 나왔습니다. 그러면 여기서 당황할 필요는 없습니다.
위에서 기술했듯이 모든 방법이 다 먹힌다고 볼 수는 없어요.
New Scan을 눌러서 우선 스캔 결과를 지워주세요.
4-2. 4번의 방법을 해봅시다.
위에서 제가 쪼갰던 5가지 방법 중 다음을 해봐야 합니다.
다음으로 해볼 수 있는 게 체력 관련 부분을 건드려보는 것입니다.
왜냐하면 타깃을 맞췄을 때 체력 게이지가 줄어드는 것을 눈으로 확인할 수 있기 때문이죠.
일단 체력 게이지가 몇이 최대 수치로 설정이 잡혀있는지는 저희가 알 길이 없으나
여기서 선택지는 2가지 정도로 나온다고 볼 수 있습니다.
1. 대체로 체력이 100%으로 설정하니 100일 것이다 하고 예상을 하고 접근한다.
2. 그냥 위의 스캔 방식으로 변화에 따른 주소를 캐치한다.
둘 다 실전에서 자주 쓰이는 방법이긴 합니다만..
1번은 예상이 맞다면 시간단축을 크게 할 수 있는 방법인데 예상이 틀리면 결국 2번으로
방법을 선회해야 하기 때문에 선호하는 방식은 사람 스타일마다 다를 듯합니다.
필자의 경우는 그냥 1번으로 가닥 잡고 2번으로 하긴 합니다.
그러면 1번부터 한 번 해볼까요?
자 타깃의 체력이 최대치일 때를 100으로 가정하는 상황입니다.
옆에 Cheat Engine 상태를 보시면 100.00으로 써놨고 밑에 Value Type을 Float 형으로 변환해놨습니다.
대체로 체력 같은 수치를 다룰 때 실수(Float) 형을 많이 사용하기 때문에 설정해 놨습니다.
물론 이 프로그램에서 실수형을 쓰지 않고 다른 단위를 쓰고 있을 수도 있기 때문에
위의 결과처럼 또 안 나올 수도 있습니다.
그러면 이렇게 생각하실 수도 있을 거예요.
'2~3가지 단위를 선택해서 검색해 봤는데 왜 안 나오냐..? 너무 노가다 아니냐..?'
맨 첫 글에서 말씀드렸지만 Cheat Engine은 이 과정들을 묵묵하게 실행하는 게 반절입니다.
스킬보다는 얼마나 진득하게 볼 수 있는지의 인내심이 더 중요한 것이죠.
다시 돌아와서 7번처럼 세팅해 놓고 First Scan을 누르시고 한 발맞춰보겠습니다.
어? 이번에는 빨간색으로 변화를 표시해 주는 주소가 생겼습니다.
그러면 간단하게 저 주소를 더블클릭 해서 Table로 내려봅시다.
더블클릭 하게 되면 이런 식으로 내려오게 되는데 저 Value에 76을 0으로 한 번 써봅시다.
그리고 Active 쪽에 박스가 있는데 거기 클릭하시면 내가 설정한 수치로 고정이 됩니다.
우선 0으로 바꿔만 봅시다. 저 수치가 현재의 체력게이지로 추측이 되니까요.
0으로 설정하니 체력이 0이 됐습니다.
그러면 이 상태로 한 발맞추면 끝나길 바라보면서 쏴봅시다.
어..? 체력 수치 자체를 조정하는 것도 기본적인 방지는 되어 있습니다. 죽지를 않고 다시 회복을 해버리네요.
이러면 Float 단위에 100을 예상하고 한 것이 틀린 것입니다. 2번 방식으로 돌아가야 할 것 같습니다.
이번에는 Scan Type을 Unknown initial value로 바꿨습니다.
이 타입의 경우 현재 프로그램에 존재하는 모든 Value 값을 다 스캔해 보겠다는 뜻입니다.
이것으로 설정 후 First Scan을 눌러보죠.
아마 엄청나게 많은 개수의 주소를 찾았다고 뜰 겁니다.
그러면 여기서 이제 어떻게 하느냐.. 변화를 주고 스캔 타입을 바꿔서 Next Scan을 하는 것입니다.
변화는 당연히 타깃에 1발 맞추는 것입니다. 1발을 맞추고 Scan Type을 Decreased Value로 바꿔주세요.
Decreased Value는 첫 스캔 결과인 12,652,544개 중 기존 Value 수치보다 떨어진 것들을 재스캔해 주는 기능입니다.
재스캔을 하고 나시면 기존의 12,652,544개의 결괏값보다 현저히 떨어진 개수를 보실 수 있습니다.
그러면 타깃을 한번 더 맞추시고 Next Scan을 눌러보죠.
근데 이 경우에는 처음 Decreased Value로 스캔했을 때보다 개수가 덜 떨어질 겁니다.
약 12,000개 정도 있는데 아직도 많습니다. 그러면 이번에는 방법을 살짝 바꾸죠.
타깃 말고 그냥 허공에다가 쏘면서 Scan Type에 보면 Unchanged Value 가 있습니다.
이 타입으로 바꿔서 다시 Next Scan을 눌러봅시다.
개수가 221개까지 줄어들었고 이제 주소들을 쓱 한번 봅시다.
다른 숫자들은 유난히 크거나 다 0인데 중간에 00189B20을 보시면 52라고 써져 있는 게 보입니다.
느낌이 오지 않습니까? 이게 체력 수치일 거 같다는 느낌 말입니다.
타깃을 한 번 맞추고 52라는 수치가 떨어지는지 한 번 봐봅시다.
줄어든 거 보니까 체력 수치가 맞다는 확신이 더 강해집니다.
5발을 다 쐈을때 보면 다시 수치가 100까지 증가하는 걸 보니 맞다고 봐도 될 거 같습니다.
그러면 이 수치를 1~10 정도로 작게 설정해서 맞춰보도록 하죠.
맞추고 나니까 타깃이 부서지고 well done이라는 메시지박스가 떴습니다.
성공했다는 뜻이겠죠.
5. 결국 얼마나 끈기 있게 하냐의 싸움입니다.
위에서 여러 방법을 시도해서 실패한 방법도 있고 성공한 방법도 있습니다.
예상했던 나머지 3가지 방법 중 되는 것도 있을 거고 안되는 것도 있을 것입니다.
결국 이 프로그램을 다루는 실력을 늘리려면 이렇게 성공하고 넘어갈게 아니라
나머지 방법에 대해서도 시도를 해보는 식의 공부가 필요한 것입니다.
이런 단순하다고 생각되는 프로그램에서도 생각보다 심도 있는 공부를
할 수 있으니까 꾸준히 해결 방법을 생각해 보는 것도 좋습니다.
제가 다루기엔 이미 이 글이 너무 긴데 더 길어지니까 추후에 다룰 수 있으면 다뤄보고
다음 글은 Step 2로 오겠습니다.
[다음글] - 4. 치엔 튜토리얼 Step 2
'Reversing & Cheat Engine' 카테고리의 다른 글
6. 어셈 명령어 (0) | 2024.02.19 |
---|---|
5. 어셈블리어 (0) | 2024.02.19 |
4. 치엔 게임 튜토리얼 Step 2 (2) | 2024.02.19 |
2. Cheat Engine 설치 및 세팅 (2) | 2024.02.17 |
1. Cheat Engine & Reversing (1) | 2024.02.17 |