로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

『봇을 이용한 게임 해킹: 메모리 스캐닝에서 반응형 해킹까지』

   
지은이 닉 카노   |   출판사 에이콘  |   발행일 2018년 08월 17일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 1% 300원
발행일 2018-08-17
ISBN 1161751920 | 9791161751924
기타정보 번역서 | 408쪽
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
게임
종합지수 0p
월간지수 14p 2 위
주간지수 100p 1 위
   
이 책의 원서
  Game Hacking: Developing Autonomous Bots for Online Games
NO STARCH PRESS | Nick Cano
 

★ 요약 ★



인터넷에서 쉽게 구할 수 있는 간단한 툴을 이용해 게임 봇을 만들고 게임을 해킹하는 다양한 기법을 다룬다. 메모리 스캐닝 같은 고전 기법에서부터 반응형 해킹에 이르기까지, 책의 내용을 천천히 따라가다 보면 게임 해킹의 기본 소양을 쌓을 수 있게 될 것이다. 어떤 게임을 대상으로 실습할지 고민할 필요 없다. 제공되는 간단한 게임 코드를 직접 수행하면서 게임 해킹의 원리를 파악할 수 있을 것이다.





★ 추천의 글 ★



닉은 정말 훌륭한 사람이다. 우리는 당신이 상상할 수 있는 모든 방법대로 죽이 척척 잘 맞았다. 나는 잠시 동안 보안 관련 일을 한 적이 있었고, 그는 나보다 조금 더 젊었다. 나는 대학을 다녔었고 그는 대학에 대해 잘 알지 못했다. 나는 신앙이 있지만 그는 그렇지 않았다. 흥미로운 사실은 그 모든 게 그다지 중요하지 않았다는 점이다. 우리는 이 모든 것을 크게 신경 쓰지 않았다. 나이, 인종, 성별, 학위 이런 것들은 게임과 해킹 그리고 코딩에서는 아무 의미도 없는 것들이다!

그는 결국 해냈다. 그는 재미있는 사람이고, 영리하며, 열심히 일한다. 또한 누구보다 인내심이 강한 사람이다. 게임과 해킹, 코딩에 대한 공통점을 누구보다 잘 이해할 수 있는 친구다. 그는 이런 분야에서 일하면서 가장 수익이 높은 봇을 만들어내는 사람이다.

이 책의 첫 부분에서 그는 게임을 찬찬히 뜯어보게 만들고 당신에게 소프트웨어를 조사할 수 있는 툴과 간단한 트릭을 가르쳐줄 것이다. 당신은 게임의 내부에 대해, 그리고 이들을 어떻게 분해하며 어떻게 플레이를 수정할 수 있는지 배우게 될 것이다. 예를 들어, 그는 당신에게 안티 치트를 피하면서 어떻게 플레이를 자동화할 수 있는지에 대해 알려줄 것이다. 당신이 만든 봇이 당신이 자리에 없는데도 경험치와 골드, 아이템을 모은다고 상상해보라. 멋지지 않은가?

치터들이 어떻게 치팅을 수행하는지 궁금하지 않았나? 당신이 만든 게임을 패치하거나 봇으로부터 보호하고 싶어 하지 않았나? 커피 한 잔을 시키고 노트북을 열어보자. 그리고 이제 이 책을 즐겨보자.



- 자레드 드모트(Dr. Jared DeMott) / 보안 전문가 & 소프트웨어 개발자





★ 이 책에서 다루는 내용 ★



█ 치트 엔진을 사용해 메모리 스캔하고 수정하기

█ OllyDbg를 사용해 프로그램 구조를 살펴보고 플로우 수행하기

█ 프로세스 모니터를 사용해 프로세스 로그를 남기고 필요한 데이터 파일 찾아내기

█ NOPing, 후킹과 그 밖의 기법들을 사용해 컨트롤 플로우 조작하기

█ 일반적인 게임 메모리 구조 찾아내고 분석하기

█ 월핵이나 헤드업 디스플레이 같은 평소에 알 수 없는 정보 쉽게 나타내기

█ 자동 힐러나 콤보 봇 같은 반응형 해킹 기법

█ 동굴 탐험가나 자동 루터 같은 인공지능을 겸비한 봇





★ 이 책의 대상 독자 ★



소프트웨어 개발을 가르치는 것을 목적으로 하지 않으며, 독자들이 소프트웨어 개발에 대한 기본 지식을 어느 정도 갖추고 있다고 상정한다. 윈도우 기반의 소프트웨어 개발뿐만 아니라 게임 개발과 메모리 관리에 대한 일정 정도의 지식이 있다고 가정한다. 이 정도 소양을 갖추고 있다면 내용을 따라가기에 충분하며, 만약 X86 어셈블리와 윈도우 인터널 개발에 대한 경험이 있다면 좀 더 자세한 구현 방법을 알 수 있을 것이다.





★ 이 책의 구성 ★



이 책은 크게 4개의 부로 구성돼 있으며, 각 부는 게임 해킹의 각기 다른 핵심적인 부분들을 다루고 있다.

1부, ‘해킹 도구’에서는 게임을 해킹하는 데 사용되는 도구에 대해 알아본다.

1장, ‘치트 엔진을 사용하는 메모리 스캐닝’에서는 치트 엔진을 사용해 중요한 값들을 획득하기 위해 어떻게 게임 메모리를 스캔하는지에 대해 알아본다.

2장, ‘OllyDbg를 이용한 게임 디버깅’에서는 OllyDbg를 활용한 디버깅과 리버스 엔지니어링에 대한 집중 훈련을 받을 수 있다. 여기서 배운 기법들은 추후 봇을 만들고 코드 인젝션을 수행할 때 유용하게 쓰일 것이다.

3장, ‘프로세스 모니터와 프로세스 익스플로러 살펴보기’에서는 이 두 가지 정보 수집 툴을 사용해 게임이 파일이 그 밖의 프로세스, 네트워크, OS 등과 어떻게 상호작용하는지 감시하는 법을 배울 것이다.

1부의 각 장에서 새로 습득한 스킬을 테스트하고 연마하는 데 필요한 커스텀 바이너리를 포함해 다양한 온라인 리소스들이 제공될 것이다.

1부에서 제공되는 툴을 어느 정도 다루게 된다면, 2부, ‘게임 해부’를 통해 게임 내부에 침입해 어떻게 게임이 동작하는지를 배우게 될 것이다.

4장, ‘코드에서 메모리로: 기본 원리’에서는 게임 바이너리 안에 게임 소스 코드와 데이터가 컴파일되고 나면 어떤 모습인지를 배우게 될 것이다.

5장, ‘고급 메모리 포렌식’은 4장에서 배운 지식을 좀 더 심화하는 과정이다. 가상 메모리 값을 그럴듯하게 배치하고 복잡한 클래스와 구조를 분해하기 위해 어떻게 메모리를 스캔하고 디버깅을 활용할 수 있는지에 대해 배우게 될 것이다.

6장, ‘게임 메모리 읽고 쓰기’에서는 현재 구동 중인 게임에서 어떻게 데이터를 읽고 수정할 수 있는지 보여줄 것이다.

2부에서도 배운 내용을 검증하기 위해 심도 있는 예제 코드들이 제공될 것이다.

3부, ‘인형 가지고 놀기’에서는 게임을 마리오네트 인형으로 만들어 가지고 놀 수 있는 퍼피티어링(puppeteering) 스킬에 대해 배울 것이다.

1부와 2부에서 배운 기법들을 기반으로 7장, ‘코드 인젝션’에서는 게임 주소 공간에 직접 만든 코드를 인젝션하고 수행하는 방법을 설명한다.

코드 인젝션을 마스터했다면 8장, ‘게임 컨트롤 플로우 조작하기’에서 게임이 수행하는 기능을 중간에 가로채 이를 수정하고 무력화하는 방법을 배워볼 것이다. 어도비 AIR와 다이렉트3D의 일반 라이브러리 예제로 마무리된다.

클래스를 완벽하게 조종하기 위해 3부에서는 미리 작성된 방대한 양의 코드를 제공한다. 이 코드를 기반으로 봇을 만들 수 있을 것이다.

4부, ‘봇 만들기’에서는 앞서 배웠던 툴과 해체 능력, 퍼피티어링 스킬 그리고 소프트웨어 엔지니어링 배경지식을 활용해 강력한 봇을 만드는 법을 배워볼 것이다.

9장, ‘초능력으로 전장의 안개 걷어내기’에서는 기본적으로는 표시되지 않는 유용한 정보를 게임상에 표시하는 방법에 대해 배워본다. 여기에는 숨어 있는 적의 위치, 시간당 획득할 수 있는 경험치 등이 포함된다.

10장, ‘반응형 해킹’에서는 체력이 감소하는 것과 같은 인게임 이벤트를 감지하고 봇이 이런 이벤트에 사람보다 빨리 반응할 수 있게 해주는 코드 패턴을 보여줄 것이다.

11장, ‘스스로 움직이는 봇 만들기’에서는 사람이 조작하지 않고 봇이 게임을 자동으로 플레이할 수 있는 방법에 대해 배워볼 것이다. 여기서 만드는 자동 봇은 제어 이론과 상태 머신, 검색 알고리즘과 수학적 모델이 한데 모인 결과물이다.

이 장은 또한 이 주제들에 대한 핵심 과정이 될 것이다.

12장, ‘숨어 있기’에서는 만들어진 봇을 감지하고 방해하는 시스템에서 벗어나 이를 회피하는 고급 기술에 대해 배워볼 것이다.

이전 장들과 마찬가지로 4부에서도 다양한 예제 코드를 제공한다. 4부의 예제들 중 일부는 이전 장들의 코드를 기반으로 작성됐다. 그 밖의 코드들 역시 독자 여러분이 봇을 만들 때 바로 활용할 수 있도록 간단하고 직관적인 디자인 패턴을 갖고 있다. 4개 부를 모두 읽는다면 가상 세계에서 초능력을 가진 히어로가 될 수 있을 것이다.





★ 지은이의 말 ★



좋아하는 게임을 사랑하는 게임으로 바꾸기 위해 마법사가 될 필요는 없다. 좋아하는 PC 게임에 좀 더 많은 정보를 표시해주는 HUD를 달거나, 가장 최근에 있었던 전투에서 모든 아이템을 즉각 루팅해 수집할 수 있다고 상상해보자.

윈도우 기반 개발과 메모리 관리 기법을 기반으로 실제로 게임 해커가 되기 위해 필요한 것들을 알려준다. 리버스 엔지니어링과 어셈블리 코드 분석, 프로그래밍 가능한 메모리 조작과 코드 인젝션 같은 가장 기본적인 해킹 기법들을 배울 수 있다. 예제 코드와 실제로 사용된 바이너리를 활용해 이 기법들을 갈고 닦아 연마할 수 있다.



1부. 해킹 도구



1장. 치트 엔진을 사용하는 메모리 스캐닝



__왜 메모리 스캐너가 중요한가

__기본적인 메모리 스캐닝

__치트 엔진 메모리 스캐너

____스캔 유형

____First Scan 수행하기

____Next Scan

____정확한 결과를 얻지 못하는 경우

____치트 테이블

__게임 메모리 변조

____치트 엔진을 통한 수동 변조

____트레이너 제너레이터

__포인터 스캐닝

____포인터 체인

____기본적인 포인터 스캐닝

____치트 엔진을 사용한 포인터 스캐닝

____포인터 재검색

__루아 스크립팅 환경

____어셈블리 패턴 찾기

____스트링 찾기

__마치며





2장. OllyDbg를 이용한 게임 디버깅



__OllyDbg 사용자 인터페이스 살펴보기

__OllyDbg의 CPU 창

____게임 어셈블리 코드 표시하고 탐색하기

____레지스터 내용 표시하고 편집하기

____게임 메모리 표시하고 탐색하기

____게임 콜 스택 표시하기

__코드 패치 제작하기

__어셈블리 코드를 통해 트레이싱하기

__OllyDbg 표현식 엔진

____표현식으로 브레이크포인트 만들기

____표현식 엔진에서 연산자 사용하기

____기본 표현식 활용하기

____표현식을 사용해 메모리 콘텐츠에 접근하기

__OllyDbg 표현식 실제로 활용하기

____특정한 플레이어 이름이 출력되면 연산 중단하기

____캐릭터의 체력이 떨어졌을 때 수행 멈추기

__게임 해커를 위한 OllyDbg 플러그인

____Asm2Clipboard를 사용해 어셈블리 코드 복사하기

____치트 유틸리티로 OllyDbg에 치트 엔진 추가하기

____명령줄 플러그인을 통해 OllyDbg 제어하기

____OllyFlow를 활용해 컨트롤 플로우 시각화하기

__마치며





3장. 프로세스 모니터와 프로세스 익스플로러 살펴보기



__프로세스 모니터

____인게임 이벤트 로그 남기기

____프로세스 모니터 로그의 이벤트 조사하기

____더 많은 데이터를 얻기 위해 게임 디버깅하기

__프로세스 익스플로러

____프로세스 익스플로러의 사용자 인터페이스와 제어

____프로세스 속성 조사하기

____핸들 조작 옵션

__마치며





2부. 게임 해부



4장. 코드에서 메모리로: 기본 원리



__변수와 그 밖의 데이터가 메모리에 저장되는 방법

____숫자 데이터

__스트링 데이터

____데이터 구조체

____유니온

____클래스와 VF 테이블

__x86 어셈블리 크래시 코스

____명령어

____프로세서 레지스터

____콜 스택

____게임 해킹에서 중요한 x86 명령어

__마치며





5장. 고급 메모리 포렌식



__고급 메모리 스캐닝

____목적 추론하기

____OllyDbg로 플레이어의 체력 확인하기

____게임 업데이트 이후 새로운 주소 찾아내기

__복잡한 게임 데이터 식별하기

____std::string 클래스

____std::vector 클래스

____std::list 클래스

____std::map 클래스

__마치며





6장. 게임 메모리 읽고 쓰기



__게임 프로세스 식별자 알아내기

____프로세스 핸들 획득하기

____OpenProcess()로 작업하기

__메모리 접근

____ReadProcessMemory()와 WriteProcessMemory()로 작업하기

____ReadProcessMemory()와 WriteProcessMemory()로 메모리의 값 읽어오기

____정형화된 메모리 액세스 함수 작성하기

__메모리 보호

____x86 윈도우 메모리 보호 속성 구별하기

____메모리 보호 변경

__주소 공간 배치 난수화

____간편한 봇 개발을 위해 ASLR 비활성화하기

____보호 모드에서 ASLR 우회하기

__마치며





3부. 인형 가지고 놀기



7장. 코드 인젝션



__스레드 인젝션으로 코드 케이브 주입하기

____어셈블리 코드 케이브 만들기

____어셈블리를 셸코드로 변환하기

____메모리에 코드 케이브 작성하기

____스레드 인젝션 활용해 코드 케이브 수행하기

__코드 케이브를 실행하기 위해 게임 메인 스레드 하이재킹하기

____어셈블리 코드 케이브 만들기

____스켈리톤 셸코드 작성하고 메모리 할당하기

____메인 스레드 찾고 멈추기

__완벽한 제어를 위해 DLL 주입하기

____DLL 로딩을 위해 프로세스 속이기

____주입된 DLL 안에서 메모리 접근하기

____주입된 DLL을 통해 ASLR 우회하기

__마치며





8장. 게임 컨트롤 플로우 조작하기



__NOP를 통해 코드 삭제하기

____NOP를 사용해야 하는 경우

____NOP를 사용하는 방법

__게임 실행 변경을 위해 후킹하기

____콜 후킹

____VF 테이블 후킹

____IAT 후킹

____점프 후킹

__어도비 AIR에 콜 훅 적용하기

____RTMP 접근하기

____RTMPS encode() 함수 후킹하기

____decode() 함수로 RTMPS 후킹하기

____훅 배치하기

__다이렉트3D에 점프 훅과 VF 훅 적용하기

____드로잉 루프

____다이렉트3D 디바이스 찾기

____EndScene() 훅 작성하기

____Reset() 후킹 작성하기

____다음으로 할 일은?

__마치며





4부. 봇 만들기



9장. 초능력으로 전장의 안개 걷어내기



__배경지식

__라이트핵을 사용해 숨겨진 정보 찾아내기

____Central Ambient Light 소스 추가하기

____Absolute Ambient Light 증폭하기

____그 밖의 라이트핵 기법들

__월핵을 통해 숨어 있는 적 파악하기

____z 버퍼링으로 렌더링하기

____다이렉트3D 월핵 생성하기

____드러내려는 모델의 지문 채취하기

__줌핵을 통해 더 넓은 시야 확보하기

____줌핵 NOP 하기

____줌핵 후킹 맛보기

__HUD에 숨겨진 정보 표시하기

____경험치 HUD 만들기

____데이터 위치를 찾기 위해 후킹 사용하기

__그 밖의 ESP 해킹

__마치며





10장. 반응형 해킹



__게임 이벤트 관찰하기

____메모리 모니터링하기

____시각적 단서 찾아내기

____네트워크 트래픽 가로채기

____게임

__실제 게임 안에서 액션 수행하기

____키보드 에뮬레이팅

__패킷 전송하기

__한 번에 묶기

____퍼펙트 힐러 만들기

____CC 스킬에 저항하기

____마나가 줄어드는 것 막기

__마치며





11장. 스스로 움직이는 봇 만들기



__제어 이론과 게임 해킹

__상태 머신

__제어 이론과 상태 머신 결합하기

____기본적인 힐러 상태 머신

____복잡한 가상 상태 머신

____에러 수정

__탐색 알고리즘을 사용한 패스파인딩

____2개의 일반적인 탐색 기법

____탐색을 방해하는 장애물

____A* 탐색 알고리즘

____A* 탐색이 특히 유용한 경우

__평범하지만 멋진 자동화 해킹 툴

____케이브봇으로 루팅하기

____워봇으로 자동 전투하기

__마치며





12장. 숨어 있기



__저명한 안티 치트 소프트웨어들

__펑크버스터 툴킷

____시그니처 기반 검출

____스크린샷

____해시 검증

____ESEA 안티 치트 툴킷

__VAC 툴킷

____DNS 캐시 스캔

____바이너리 검증

____긍정 오류

__게임가드 툴킷

____사용자 모드 루트킷

____커널 모드 루트킷

__워든 툴킷

__봇의 흔적 관리하기

____흔적을 최소화하기

____흔적 가리기

____디버거를 검출하기 위해 봇을 교육하기

____안티 디버깅 기법

__시그니처 기반 검색 무력화하기

__스크린샷 무력화하기

__바이너리 검증 무력화하기

__안티 치트 루트킷 무력화하기

__휴리스틱 무력화하기

__마치며

닉 카노(Nick Cano)

12살 무렵 오픈소스 게임 서버용 스크립트를 처음 작성했으며, 16살에는 자신이 만든 봇을 돈을 받고 팔기 시작했다. 오랫동안 게임 해킹 커뮤니티의 일원으로 활동하면서 게임 개발자와 디자이너에게 그들이 만든 게임을 봇으로부터 보호할 수 있도록 자신의 경험에 기반한 조언을 아끼지 않았다. 또한 수년간 멀웨어(malware)를 감지하고 방어하는 일에도 종사했으며, 여러 콘퍼런스에서 자신의 연구와 툴에 대한 강의를 수행해왔다.





★ 옮긴이의 말 ★



이제 게임은 더 이상 청소년의 전유물이나 일부 어른들의 특이한 취미가 아니다. 21세기를 대표하는 문화 산업으로 성장했음은 물론, VR/AR 같은 새로운 기술 발전을 주도하면서 IT 산업에서도 최첨단의 영역으로 인지되고 있다. 이런 긍정적인 측면과 더불어, 게임 해킹이나 게임 과몰입 등 게임의 부정적인 측면 역시 간과할 수 없는 시대가 됐다. 게임 해킹의 역사는 게임의 역사와 동일하다. 게임이 생명을 갖는 시점에서부터 게임 해킹도 함께 시작된다. 최근에도 다양한 보안 기술로 무장한 게임들이 시장에 출시되고 있지만, 출시와 더불어 개발진들의 To Do 리스트 상단에는 해킹 이슈가 빠지지 않고 등장한다.

이 책은 메모리 스캐닝에서부터 반응형 해킹에 이르기까지 다양한 해킹 기법을 소개하고 있다. 봇을 만들고 이를 통해 게임 내부에 특정한 동작을 수행해 필요한 데이터를 변조하는 해킹 기법에 대부분의 지면을 할애하고 있다. 책의 후반부에는 최근에 유행하고 있는 반응형 해킹을 간단하게 소개하고 있으니, 이 부분 역시 독자들에게 많은 영감을 제공하리라 믿어 의심치 않는다. 원 저자가 제공하는 간단한 코드상에서 실제로 해킹 기법을 수행하고 원하는 결과를 얻었을 때의 쾌감을 독자 여러분이 직접 느껴보시기 바란다. 아울러 이 책이 해킹으로 인해 발생할 수 있는 리스크를 방지하는 훌륭한 첫걸음이 되기를 바라 마지않는다.





★ 옮긴이 소개 ★



진석준

넷마블과 크라이텍을 거쳐 현재 11년 차 게임 QA로 재직 중이다. 자신을 포함한 게임 QA의 역량 향상과 자기 발전 그리고 이를 통한 게임 QA 업무의 확장을 위해 여러 실험을 끊임없이 시도하는 중이다. 『뷰티풀 테스팅』(지앤선, 2011), 『닌자 해킹』(에이콘, 2015), 『게임 물리 엔진 개발』(지앤선, 2016), 『언리얼 엔진 4로 나만의 게임 만들기』(에이콘, 2017)를 번역했다.

등록된 서평이 없습니다.
수학으로 시작하는 3D 게임 개발...
양영욱
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
게임 디자인 레벨업 가이드...
스콧 로저스
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
『Go 마스터하기: 고급 기능을 활용한 실전 애플리케이션 만들기』
미할리스 추칼로스 저
36,000원
(10%↓+5%)
 
『과학 영재를 만드는 아두이노 교실 2/e: 아빠와 함께』
최재철, 마창수 저
27,000원
(10%↓+5%)
 
『C++로 나만의 운영체제 만들기 : 비주얼 스튜디오를 활용한 커널 개발』
박주항 저
36,000원
(10%↓+5%)
 
『라즈베리 파이와 슈퍼컴퓨팅: 병렬처리 시스템 구축 및 과학 프로그래밍 가이드북』
애쉬윈 파얀카 저
22,500원
(10%↓+5%)
 
『신경망 설계 2/e: 주요 신경망 이론과 응용 사례』
마틴 헤이건, 하워드 데무스, 마크 허드슨 빌, 올랜도 헤수스 저
45,000원
(10%↓+5%)
 
이메일주소수집거부