연재

[매우스압] 처음부터 시작하는 게임 해킹 - 1



0. 들어가기전


게임핵에 관한 마지막으로 썼던글이 2년전이라니... 세월이 빠르다.


어쨋든 예전 글이여도 불구하고 생각보다 나한테 개인적인 쪽지도 많이오고 해서 새로 써보려고함. 


전문적으로 서적으로 내는글도아니고, 그냥 컴퓨터프로그래밍 끄적끄적하는 찌질이 스크립트키더 정도가 쓰는글이니 100% 맹신하거나 그러지는 않았으면좋겠음.


내가 이 글을 쓰는이유는 외국사이트들에 비해서 한국의 사이트들은 조금 이런 주제들에대해 폐쇄적이여서 생각보다 프로그래밍지식이 없는사람들이 


이러한 지식들을 얻기가 매우힘들다. 내가 중딩때 게임 해킹배우기시작할때만 해도 


인터넷에 "어떻게 만드나요?" 하면 백이면 백 "그런거 만들생각으로 프로그래밍배우지마세요" 같이 이상한소리만 했었다. 


그래도 나는 어떻게 어떻게 구글신의 도움으로 외국포럼들에서 일일이 찾아가며 따라하면서 힘들게 배웠던 기억이 있음.


그냥 좀 여담이였고, 계속 말을 쓰자면 존댓말로 쓰면 더욱더 쓰기가 불편하기때문에 인터넷에서 쓰는 편한 어조로 말할테니


"나는 반말쓰는 사람들이 불편하다 !" 라고 하면 뒤로가기를 눌러줬으면함.


또한, 온라인게임들의 "돈복사", "캐시생성", "강화100%성공", "아이템생성" 등등의 핵들을 생각하는 거라면, 그런것들은 다루지 않을 생각이니 이러한 생각들 한사람들도


뒤로가기를 눌러도 좋다. 추후에 왜 저런것들을 다루지않을건지는 설명을 하겠다.



1. 개요


일단 이걸 읽는 독자들이 한번도 게임해킹을 자신이 직접 해본적이 없는 사람들이라고 생각하고 아주 기초적인것부터 시작하려고함


먼저는 아주 간단한것들부터 설명을 하고 넘어가도록하겠음


아마 초반까지는 어떻게 만드는법보다는 이론적인것부터 시작할 생각임.


"아니 이게 무슨 대학교 수업임? 그냥 만드는것부터 알려줘" 라고하면 물론 그렇게 할수도 있는데


생각보다 컴퓨터의 프로그램이 어떤 방식으로 돌아가는지 이해를 하고 넘어가는것과 이해없이 바로시작하는것에 차이점이 큼


최대한 간략하고 이해쉽게 설명하고 빠르게 넘어갈테니까 걱정은 안해도될듯




2. 이론


살면서 어디선가라도 이런말 들어본적이 있지않음? "컴퓨터는 0과 1밖에 알아먹지 못한다"


그런데 어떻게 0과 1밖에 알아먹지 못하는데 


메모장에 ABCD 를 쓸수있고 이렇게 웹사이트에 한글도 적고 할수있는 걸까?


이거에 대해서 설명하면 한도 끝도 없으니까 단순히 말하자면


0과 1로 수천 수만 수십만의 경우의 수를 만드는거야


예를들어서 한자리 단위에 0과 1만 있으면 2가지 경우의 수, 두자리 단위에 0과 1이있으면 00 , 01 , 10, 11 이렇게 4가지 경우의 수가 생기지 


이걸 이용해서 알파벳, 숫자 등등에 다 특수한 숫자를 새겨


실제로 알파벳 a는 01100001 이고 b는 01100010임 (http://sticksandstones.kstrom.com/appen.html) 여기로 가면 알파벳코드표를 볼수있음.




2-1) 이해


그래서 왜 이런 정보가 도움이 되냐? 


컴퓨터와 커뮤니케이션이 어떻게 이뤄지는지를 이해하기 위함임


컴퓨터는 0과 1밖에 이해를 못하고 우리(인간)은 0과 1로만 이뤄져있으면 이해하기가 너무 힘들기때문에 뭔가 방법이 필요하지


jsf_support_40.png

(위 코드는 Java 코드다)


그래서 옛날에 똑똑하신분들께서 중간 언어들, 즉 프로그래밍언어들이 탄생한거지


우리가 흔히 들을수있는 C++, C#, Java, python, lua 등등 모두 컴퓨터와 소통하기위한 중간언어라는거지


인간들이 이해하기 쉽게 좀더 인간 언어에 가깝게만듦과 동시에 컴퓨터가 이해할수도 있게 변환시켜주는거지



2-2) 심화


그러면, 우리가 하고 싶은일은 다른사람이 이미 만들어놓은 프로그램을 내 마음대로 고치거나 혹은 부수고 싶은거니까


저 소스코드를 고치면 핵을 만들수 있는거네 ? 



라고 할수도 있겠지만 거기에는 문제점이 있음


위에 나열했던 프로그래밍언어를 사용해서 프로그램을 제작(컴파일링)을 해버리고나면


원본 소스코드를 가진 제작자가 아닌 이상 프로그램만 가지고 있는 사람측에서는 원본 소스코드를 볼 수 있는 방법이 없을뿐더러


뭔가 뜯어고쳐버리고 싶다해도 사용자측에서 볼 언어들은 저 언어들이 아님


(물론 디컴파일러같은 프로그램들도 존재하지만 패턴을 분석해서 원본 소스를 유추하는거지 100% 복원가능한게 아님)


ollydbg-sldt.PNG

(위 사진은 ollydbg다. 개인적으로 옛날에 엄청좋아했던 디버거)


우리가 가지고있는건 실행파일뿐이기때문에 우리가 해야할일을 분석할 파일의 실행코드들을 보고 


원래 코드를 유추해서 내가 원하는 부분을 수정하는거임.


위 사진을 보면 저건 Assembly 라는 언어인데 


아까 말했던 C++, C#, Java 등등에 비해서 저급언어(low-level language)다.


저급이라고해서 저 언어가 안좋거나 그런 뜻이아니라 말그대로 레벨이 낮다는 소리다.


위 Java 사진은 좀더 인간언어에 가까운 프로그래밍 언어였다면


이 어셈블리어는 기계언어에 가까운 프로그래밍 언어인거다.



우리가 원본소스코드를 가지고 있지 않고 실행파일만 가지고 있는 이상 우리가 주로 보게될화면은 저 어셈블리어다.


좋건 싫건 해킹 혹은 리버스엔지니어링을 한다면 저 어셈블리어를 모르고 진행할수가없다. 



어렵게 보이고 못할것같아도 천천히 익숙해지면 다 가능하기때문에 너무 겁먹지는 말아줬으면함


내가 저 어셈블리어 디버거창을 볼땐 중1이였음 그때당시는 영어도 못했고 고등학교 인문계도 턱걸이로 들어갈정도로 공부도 못하던 흔히 있는 평범급식충 이였는데 


그래도 시간이 지나고 익숙해지니 그래도 보기편해졌음



3. 사용할프로그램들과 타겟게임


그냥 이론적인 면들은 이정도면 됐고 추가적으로 뭔가 설명이 더 필요하다 라는게 느껴지면


추후에 더 설명을 하겠음


연습용도로 쓸 프로그램들은



1.png

(위 사진은 치트엔진)



치트엔진(Cheat Engine) 과 올리디버거(Olly dbg)를 사용할예정임


치트엔진의 명성이야뭐... 거의 게임핵제작쪽에서는 신급이고


올리디버거는 개발중지가 된지 오래됐지만 다른 디버거 IDA Pro와 같이 고급툴보다는 


좀더 초보자에 친숙한 프로그램을 선택하는게 좋을것같아 선택했음



또한 연습용으로 사용될 게임들은 글을 적어도 저작권에 위배가 되지않을만한 게임들을 선택할 생각임


예를들어서 스타크래프트1, 핀볼, 지뢰찾기 혹은 기타 싱글게임들.


개인적으로 스타1이 여러가지 해킹테크닉들을 연습하기 좋아서 아마 스타1위주로 작성이 될듯함



초보자들을 위해 아예 쌩기초부터 단계별로 천천히 다 다뤄볼테니까 


천천히 하나하나씩 따라 해보면될껍니당



다음편에 봅시다.




 

19개의 댓글

2016.02.02
참신한 주제네
0
2016.02.02
ㅊㅊ
0
헥스에디터나 솔에디터, 치트엔진, 세이브파일 이런거 뜯어보고 하는 중인데

어렵던데
0
스타 싱글 치팅은 쉽던데
0
2016.02.02
재밌겠다
0
2016.02.02
워크3나 스타1이나 치팅하기 너무 쉬움...
0
2016.02.02
와 나 입대할때쯤인가 게임핵 써주시던 게이가 돌아오셧네 언제나 글 재밌어 ㅊㅊ
0
2016.02.02
실시간 패킷변조까지 하냐? 게임가드 이슈나 더미다언팩까지 할 예정?
0
2016.02.02
@익창
글을 읽어보면 "초심자"들을 위한 글을 작성할예정임.
안티치트바이패싱이나 혹은 언패킹 패킷변조같은경우는 이미 디버깅실력이 꽤나 있고 암호화기법들을 잘안다는 사람들이 많다는 전제하에 써야하는데

그런글을 쓸꺼면 다른사이트에 쓰지 여기엔 적합하지않다고 생각하지않을뿐더러
내가 분석해서 알아낸 우회기법들을 공개해서 막히게할만큼 성인군자까지는 아님

그냥 사람들이 가볍게 보거나 혹은 "아, 이런식으로 만드는구나" 라는걸 알려주기위함이 목적임
0
2016.02.02
@흑기
웰비아랑 잉카애들 자기네 가드 바이패싱하는법 어디든간에 올라오면 진짜 금방막는다. 걔네들 구글이나 네이버 계속 검색해서 눈팅하는거 백퍼센트임.
0
2016.02.02
@흑기
아 이게 처음시작인줄알고
꾸준히 어느수준까지 진행할지 물어본거였음
기법은 당연히 그렇게 하는게맞는거고..니가 토발드도아닌데

그리고
스타를 예로들었듯이 구시대작이나
이전버전의 보안이슈들을 예제로 삼으면 좋을거같다고
첨언해봄
0
2016.02.02
새꺄! 입대하기전에 마지막으로 읽고 전역해서 또 읽네! 새끼!
0
2016.02.03
치트엔진 메이플 듀프핵쓰던 그 프로그램이네
0
2016.02.03
지식 공유글은 무조건 추천입니다!! 좋은 정보글 감사합니다
0
2016.02.03
재밌겠다. 전공이 자연과학분야인데 코딩도 관심이 많아서 혼자 C+ 도 독학했었는데, 꾸준히 올리면 열심히 배워볼깨.
0
2016.02.04
한창 이런거했을때 올리디버거로 크레이지아케이드 운영자아이디만들고 티서치로 체마무한 wpe로 패킷찾아내서 도배엄청했었는데 지금은 기억이안난다.
혹시 인엑스존이라고 아실랑가모르겠네
0
2016.02.05
저기 그럼 해킹은 아닌데 온라인 게임들 패킷을 따서 감지를 하고픔
그런데 보통 온라인 게임들은 암호화를 해서 서로 명령들을 주고 받잔아
보통 그 암복호화 방식은 어떻게 찾아??

지금 내가 하고싶은건 온라인 게임 서버쪽에서 ㅎㅇ를 보내주면
프로그램에서 그걸 인식하고 적동하는걸 원하는데...

패킷을 따오는것까진 알겠는데 문제는 해석을 못해...ㅠㅠ
0
2016.02.06
롤러코스터 타이쿤이 어셈블리어로만 만들어진 게임이라던데 얼마나 대단한거냐
0
2016.02.09
스타1 맵 언디텍트 같은것도 어렵더랑..
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5222 [연재] 공포게임하는만화.manhwa19 <화이트데이> 8 잿더미어캣 7 2 일 전
5221 [연재] 공포게임하는.manhwa 18 [유튜브 관종이 되는 게임] <콘텐... 10 잿더미어캣 8 9 일 전
5220 [연재] 공포게임하는.manhwa 17 [소녀의 잔혹동화] <마녀의 집> 15 잿더미어캣 9 15 일 전
5219 [연재] 공포게임하는.manhwa16 <마녀의집MV> 10 잿더미어캣 20 23 일 전
5218 [연재] 공포게임하는.manhwa 15[아편고양이, 캣냅편] <파피플레이... 13 잿더미어캣 21 29 일 전
5217 [연재] 공포게임하는.manhwa 14[교권의 수호자, 미스딜라이트] <... 15 잿더미어캣 28 2024.04.08
5216 [연재] 공포게임하는.manhwa 13[4D로 즐기는 허기워기] <파피플레... 21 잿더미어캣 20 2024.04.01
5215 [연재] 공포게임하는.manhwa 12 <파피플레이타임> 7 잿더미어캣 19 2024.03.25
5214 [연재] 공포게임하는.manhwa 11 <파피플레이타임> 4 잿더미어캣 16 2024.03.19
5213 [연재] 조조전 모드 - 유선전 플레이 일지 (29) 8 CopyPaper 14 2024.03.15
5212 [연재] 조조전 모드 - 유선전 플레이 일지 (28) 6 CopyPaper 6 2024.03.15
5211 [연재] 조조전 모드 - 유선전 플레이 일지 (27) 4 CopyPaper 5 2024.03.14
5210 [연재] 조조전 모드 - 유선전 플레이 일지 (26) 3 CopyPaper 5 2024.03.14
5209 [연재] 조조전 모드 - 유선전 플레이 일지 (25) 8 CopyPaper 6 2024.03.13
5208 [연재] 조조전 모드 - 유선전 플레이 일지 (24) 5 CopyPaper 5 2024.03.12
5207 [연재] 조조전 모드 - 유선전 플레이 일지 (23) 7 CopyPaper 5 2024.03.12
5206 [연재] 조조전 모드 - 유선전 플레이 일지 (22) 5 CopyPaper 5 2024.03.11
5205 [연재] 공포게임하는.manhwa 10 <파피플레이타임> 4 잿더미어캣 9 2024.03.11
5204 [연재] 조조전 모드 - 유선전 플레이 일지 (21) 9 CopyPaper 4 2024.03.05
5203 [연재] 조조전 모드 - 유선전 플레이 일지 (20) 5 CopyPaper 7 2024.03.05