리버스엔지니어링(역공학)/치트엔진 8

치트엔진 튜토리얼 7단계 다중 포인터

1.치트엔진 튜토리얼 Step 7 다중포인터 즉 말그대로 포인터의 포인터 포인터 포인터 이런식으로 다중으로 되있는것이다.정수를 가르키는 포인터가있으면 그포인터를 가르키는 포인터가 있고 그포인터를 가르키는 포인터가 있는게다중포인터이다. 이번단계는 4중으로 되어있는 포인터이다.밑에그림은 5중포인터이다. 문제를 잘못읽어서 잘못그려버렸다. 이런식으로 되어있다 .문제를 보면 4중포인터를 찾아 5000으로 고정하라는 뜻이다. 치트엔진을 실행시켜서 진값을 찾아 테이블로 옮겨놓는다. 이번엔 Find out what accresses this address 눌러 주소가 어디로 이동되는지 확인을 한다.한대 때리면 어디로이동하는지 화면에 뜬다. esi+18에 eax의 값을 넣는걸 볼수있다. 우리는 esi가 가지고있는 주소를..

치트엔진 튜토리얼 6단계 코드인젝션

1.치트엔진 튜토리얼 Step 6 코드인젝션 보기와 같이 진값을 미리 찾아 테이블로 옮겨 놓는다. 이주소가 어느곳에서 사용되는지 보기위해서 Find out what writes to this address 를 누른다. 그리고 한대를 때리면 보기와같이 SUB 즉 값을 빼는것을 알 수 있다. SUB는 어셈블리 명령어로 빼기라는 뜻이다.sub,[ebx+000000478],01 은 478이란주소에서 01만큼 빼라는 뜻이다 즉 공격을 했을때 1이 감소했던이유는 체력을 담고있는주소에서 버튼을 누를때마다 1씩 감소했기 때문이다. 우리는 이제 이것을 코드인젝션을 통해서 2씩 증가하도록 바꿀것이다. 문제를 보면 2씩 추가하면 성공이라고 나와있기 때문이다. Show disassembler를 클릭하여 메모리뷰에있는 어셈블러..

치트엔진 튜토리얼 5단계 포인터

1.포인터 100을 가지고있는 주소가있는데 그 주소를 담고있는 변수가 있다.하지만 프로그램을 재실행하면 주소를담고있는 변수가 계속바뀌게된다.그러므로 프로그램을 재실행하더라도 유지를 할 수있게할려면 포인터를 구해야한다.여기서 포인터란 가르키는 것이다. 즉 주소를 가르키는것인데 치트엔진에서 포인터를 구하면 그주소안의 값도수정이가능하다 이번글에서는 포인터를 직접 찾아 볼 것이다. 일단 진값을 찾아서 테이블에 가져온다. 그리고 이 주소가 어디에 사용되는지 확인을 하기위해서 find out what writes to this address를 누른다. 그후 체인지 벨류를 누르게되면 값이 하나가 뜨는데 mov [edx],eaxeax의 값을 edx로 대입하라는것이다.두번째 빨간색네모를 보면 edx값이 나와있다 이것을 ..

치트엔진 튜토리얼 4단계 사용할 수 없는 값

1.사용할수 없는값어떠한 값을 작동하지않도록 하는것을 배울것이다.이것은 쓸모없는것을 작동하지않게 하기위해서 매우 유용하다.예를 들어 몬스터가 나오는 코드가있는데 그것을 작동하지않게하면몬스터는 나오지않는다. 하지만 이번강의에서는 어셈블리어라는 저급언어를 약간알아보게 될것이다. 일단 처음에는 진값을 찾아서 테이블로 옮겨놓는다 이것은 기초적인거여서 생략하겠다. 이제까지 글들을 잘보고 실습을했다면 바로 할 수 있을것이다. 테이블에 값을 선택한후 우클릭을 하여 find out what writes to this address 즉 이 주소가 어디에 사용되는지 볼수있도록 알려주는것이다. 이것을 선택하게되면 창이 하나 뜬다. 그후 체인지 벨류를 눌러서 값을 바꿔보자 그러면 2번과 같이 하나가 뜨는데 값이 어디로 이동되..

치트엔진 튜토리얼 3단계 실수형

1.치트엔진 튜토리얼 Step 3 실수형이번단계에서는 실수형에대해서 다루어 볼것이다.소수를 나타낼때 쓰는타입이 두가지가 있다. float ,doubledouble이 float보다 좀더 세부적으로 소수점뒷자리를 길게 나타나게 해준다.이것을 응용하면 예를들어 케이크 한개가있다. 한개가있으면 값이 1인데 케이크 반을 먹었다고 치면0.5가되는것이다. 그러므로 이것을 표현하기위해서는 이런것들도 필요하다는것을 기억하자. 우선 벨류타입을 float으로 바꿔준다. 그리고 100을 뉴스캔후 때려서 나온값을 넥스트스캔한다.값이한개가나오는데 1단계랑 비슷하다. double도 같은 형식으로 하면된다. 값을 5000으로 바꾸고 때려주면 피가 올라간것을 볼수있다. double도 같은방법으로 하면 된다.벨류타입을 더블로 바꿔서 스..

치트엔진 튜토리얼 2단계 알수없는값

1.치트엔진 튜토리얼 2단계 알수없는 값우리는 이번 2단계를 통해서 값이 나오지않아도 그값을 찾는 방법에 대해서 배울것이다.게임에서보면 체력은 숫자로 이루어지지않고 바 형태로 막대기 형식으로 이루어져있다.우리는 그것을 담고있는 어드레스를 직접찾아보고 2단계의 조건인 바의 값을 5000으로 수정해보자. 사진을 보면 빨간색박스가있다. 저거는 체력바이다.한대를 때리면 체력바가 줄어드는것을 볼수있다. 스캔타입에 들어가서 알수없는 값을 스캔하는걸로 바꾸어준다.참고로 체력은 대부분 4바이트이다. 벨류타입은 왠만해서는 바꾸지말자.옛날에 나온 게임들은 2바이트 일 수도있다. 그다음 뉴스캔을 눌러서 스캔을 해보자 빨간박스를 보면 약 60만개의 값이 나온걸 확인 할 수 있다.이제 우리가 해야되는것은 이 60만개의 값 중에..

치트엔진 튜토리얼 1단계 체인지벨류

1.치트엔진을 실행하면 우측 상단에 있는 Help를 눌러서 치트엔진 튜토리얼을 실행하자 64bit로 선택하지말고 위에 32비트전용으로 선택을 한다. 2.컴퓨터모양의 버튼을 눌러서 프로세스를 치트엔진 튜토리얼로 잡아준다. 그리고 어태치 버튼을 눌러서 어태치를 해준다. 3.NEXT를 눌러서 넘어가면 1단계가 나온다 .해석을 해보면 Health 즉 체력이 100인데 그것을 1000으로 바꾸라는 뜻이다.힌트를 보면 대부분 체력은 2바이트나 4바이트로 되있다는데 1000으로바꾸는것이니 4바이트이다.바이트개념을 이해하지않았으면 바이트 개념부터 이해하고 오기 바란다. 보기와 같이 100을 4바이트로 스캔하게되면 수많은 값이 나온다.여기서 진짜값 즉 진값을 찾아야한다. 100이 모두 체력값이라고 판정을 지을수없기 때문..

1.치트엔진이란? 설치방법

개요:치트오메틱과 같은, 정확히는 원조라고 할 수 있는 메모리 수정프로그램으로, 기능이 매우 많아 게임해킹의 필수품으로 여겨진다. 'cheat engine assembler'를 지원하며, 프로그램에 어셈블리 코드를 끼워넣을 수 있다. 특정 메모리의 레지스터까지 변경할 수 있고 특정 주소에 무슨 opcode가 접근하거나 쓰고있는지도 찾을 수 있는등 디버깅 기능도 많이 포함하고있다. 1~8바이트, Float, Double, String, Binary등 다양한 방식을 스캔할 수 있어 매우 유용하다. 또한 Lua스크립트도 지원하고 5.8버전부터는 dbvm(가상머신)까지 자체적으로 지원한다. 현재 최신버전은 6.8.1이고 http://cheatengine.org에서 다운로드 받을 수 있다. 6.7 버전의 경우 크..