티스토리 뷰

Cheat Engine으로는 메모리를 조작할 수가 있습니다. 온라인 게임이나 설치를 할 시에 약관동의를 읽어보면 메모리 변조를 할 시에 처벌이 나오는데 하지 않는게 앞으로 생활하는데 평탄할 것입니다:D


* 연습용으로 지뢰찾기나 싱글게임 같은 것을 크랙해보면 많은 공부가 됩니다. 



http://www.cheatengine.org 에 들어가면 Cheat Engine 최신 버전을 받을 수가 있습니다.



설치 도중에 이 부분에서는 아래 사용자 지정 설치(고급)을 누르고 Opera 설치를 체크 해제합니다. 빠른 설치(권장)이나, Opera 설치 체크 해제를 하지 않으면 설치하고 싶지 않은 프로그램이 설치가 되어서 성질을 긁습니다.




튜토리얼을 하고 싶으면 YES를 누르고, 툴 사용법을 안다면 NO를 누르고 바로 툴을 사용하면 됩니다. 튜토리얼을 한번 해봤는데, 그냥 값 바꾸기 정도라서 크게 배울점은 없습니다.




NO를 누르고 난 뒤의 Cheat Engine 6.4 모습입니다. 



위의 상단 왼쪽에 녹색박스로 된 컴퓨터를 클릭하면 현재 사용하는 프로세스 리스트를 뽑아서 나열합니다. 크랙할 프로그램을 클릭해서 시작하면 됩니다. 올리디버거의 attach 기능과 유사합니다. 저는 옛날에 출시된 피카츄 배구를 가지고 값을 조작해보도록 하겠습니다. 



Cheat Engine의 우측을 보면 Value Type에는 각종 타입들이 있습니다. 대부분 프로그램은 4Byte를 이용하고, 경우의 수에 따라서 타입을 변경해서 스캔을 하면 됩니다.



Scan Type에는 조건들이 담겨져 있습니다. Exact Value에는 고정된 값을 스캔하고, Bigger than과 Smaller than은 각각 Value에 입력된 값보다 커지거나 작아지는 부분을 스캔할 때 사용합니다. 



피카츄 배구 게임을 불러온 후에 4:0 으로 패하게 만듭니다. 저의 목표는 저 4의 값을 조작하는 것을 원합니다. 그러기 위해서는 4의 값 부분을 가지고 있는 코드를 찾아야 하기 때문에 Scan을 해봤는데, 4 값을 가지고 있는 주소들이 엄청 많습니다. 점수를 5로 변경해서 변하는 부분을 찾아보겠습니다.



점수 차이를 5:0으로 만들고 Value 값에 5를 적고 Next Scan으로 다시 검색하면 4였던 주소들이 5로 변한 것을 화면에 표시합니다. 003E086C 주소만 5로 변했기 때문에 저 부분이 지금 5:0으로 이기고 있는 피카츄의 점수 부분입니다. 




아래 화살표를 클릭하면 위에서 스캔으로 찾은 주소 값을 아래로 내려서 조작을 할 수가 있습니다.




아래로 내려온 003E086C 값에 Value값에는 '5'가 들어있습니다. 이 값을 바꾸면 현재 이기고 있는 피카츄의 점수가 바뀔 것입니다.





Value 부분을 더블 클릭하고 10으로 바꿔보겠습니다.




10으로 변경한 모습입니다. 




게임 화면으로 돌아가면 왼쪽 피카츄 점수가 3에서 10으로 변했습니다. 이런식으로 값을 조작해서 더 응용을 하면 오른쪽 피카츄가 점수를 내도 왼쪽 피카츄 점수가 올라가는 식으로 변경할 수도 있습니다. 이와 같은 싱글게임으로는 FPS 게임, 메탈슬러그 같은 오락게임을 재미있게 즐기는 용도로만 사용하시길 바랍니다. 





Cheat Engine의 또 다른 기능으로 아래 창에 있는 주소의 마우스 오른쪽 버튼을 클릭하면 "Find out what accesses this address" 가 있는데, 이 기능은 지금 선택한 주소가 무엇을 access하고 있는지 찾아줍니다. 즉, 프로그램이 실행될 때 영향을 받는 값이 들어있겠죠?





Find out what accesses this address 창을 누르면 아래와 같은 창이 뜨는데, 윗 창은 점수를 낼 때 변화하는 주소들입니다. 어셈블리 명령어 inc는 값을 1 증가시켜주는 것이니까 중요한 주소라는 것을 알 수가 있습니다. 아래 창은 레지스터, 스택 창입니다.




옆의 버튼중에 'Show disassembler'을 눌러서 디스어셈블된 코드를 보겠습니다. 올리디버거 같이 CPU창을 나타냅니다.




아래와 같이 inc 어셈블리가 나온 주소입니다. 이제 다른 기능을 추가 할 때 Memory Viewer에서 사용하기 때문에 프로그래밍 실력만 갖춘다면 보통 프로그램을 크랙할 수 있을 겁니다. 하지만 불법입니다 ^^;





두 번째로 Find out what writes this address 버튼을 클릭을 하게 되면 아까 access와 다르게 값을 직접적으로 쓴 주소만 나타나게 됩니다.





아까와 다르게 00403C4A 부분 inc 하는 부분만 나타내게 됩니다. 즉, 값을 쓸려고 할 때 사용하는 버튼입니다.




아래는 Memory Viewer 인데, 아까와 다르게 덤프창에 깔끔한 바이트값들이 들어있습니다. 





Memory Viewer에서 Tools에는 재미있는 기능들이 많습니다. 메모리 할당, 메모리 NOP 채우기, DLL 인젝션, Auto Assemble 등이 있습니다. 코드 인젝션을 하기 위해서는 Auto Assemble을 클릭 합니다. 코드인젝션을 잘만 이용하면 메모리를 변조시킬 수가 있기 때문에 자주 사용합니다.





Auto assemble의 Template안을 보면 코드인젝션, API 후킹, relocation 등 다양한 공격 기법들이 많습니다. 수동으로 디버거로 어셈블리를 수정하는 것과 다르게 진짜 편리하네요.





코드인젝션을 누르면 아래와 같이 그 주소를 불러옵니다. 그리고 그 주변에 코드인젝션할 명령들을 사용자가 작성해서 변조 코드를 작성하면 됩니다. 아래는 default 화면입니다.





이와 같이 Cheat Engine의 부족한 설명이었는데 읽어주셔서 감사합니다. 재미있게 사용할 수 있는 툴이지만 악용을 한다면 철컹철컹 되는 자신의 모습을 생각하시기 바랍니다.


'리버싱 > 정리' 카테고리의 다른 글

IDA pro 사용법  (0) 2015.08.12
[코드인젝션]기본 뼈대  (0) 2015.08.11
[ASPACK Unpacking]MUP  (1) 2015.07.29
.NET Reflector에 reflexil 추가 하기  (0) 2015.07.03
.net 프로그램 리버싱툴  (0) 2015.07.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함