봇을 이용한 게임 해킹
도서명:봇을 이용한 게임 해킹
저자/출판사:닉,카노/에이콘출판
쪽수:408쪽
출판일:2018-08-17
ISBN:9791161751924
목차
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 캐시 스캔
____바이너리 검증
____긍정 오류
__게임가드 툴킷
____사용자 모드 루트킷
____커널 모드 루트킷
__워든 툴킷
__봇의 흔적 관리하기
____흔적을 최소화하기
____흔적 가리기
____디버거를 검출하기 위해 봇을 교육하기
____안티 디버깅 기법
__시그니처 기반 검색 무력화하기
__스크린샷 무력화하기
__바이너리 검증 무력화하기
__안티 치트 루트킷 무력화하기
__휴리스틱 무력화하기
__마치며