Security - Real World/Reversing

Windows Kernel Hooking - II

PS리버싱마크해커박종휘TV 2024. 1. 8. 18:51

이전 글을 읽는 것이 좋다.

 

Preface

 

“If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.”

 Sun Tzu, The Art of War

 

 

이 인용문에 따라서, 사전 조사를 할 필요가 있다. 우선 가장 중요한 점을 발견했다.

 

Figure I. 저작권법

 

대충 치트 프로그램 만들어서 제3자에게 제공하거나 사용하면 안 된다는 것이다. 나는 당연히 비디오 게임에서 핵을 쓰는 것이 재미도 없고 윤리적으로 문제가 된다는 것을 알기에, 오프라인으로 플레이할 것이며 게임 상에서 어떠한 이점도 얻지 않을 것이다. 모든 정보를 자서전에 공개적으로 적는 것은 약간 문제가 될 수 있기에, 중요한 코드 및 정보는 생략하여 이 글을 제외한 모든 글을 비공개로 올릴 것이다. 정보가 필요하다면 연락하길 바란다.

 

VAC

 

VAC는 Valve Anti-Cheat의 줄임말로 밸브 사가 만든 핵 방지 소프트웨어이다. VAC가 적용된 게임으로는 카운터 스트라이크 등이 있고, 우리가 리버싱할 VAC가 적용된 소프트웨어는 카운터 스트라이크 2 이다.

 

VAC의 가장 큰 특징이라고 할 것은, 모든 핵 방지 매커니즘이 Ring 3에서 동작한다. 따라서 커널 모드로 들어가 버리면 얘넨 아무것도 못 한다.. 그에 대한 증거로 드라이버 쿼리 명령어 (driverquery) 를 입력할 시 VAC 혹은 Steam에 관한 드라이버가 하나도 없다는 것을 알 수 있다. 물론 TF2 같은 게임에선 커널 모드 VAC를 사용하기도 한다.

 

기껏해야 드라이버 정보들 불러와서 수상한 것을 잡는 것 뿐이다. 여기서 '수상한 것'은 VAC 데이터베이스에 저장된 일종의 시그니쳐들이다. 예를 들어 이런 것.

 

Figure II. SUS

 

So.. What am I going to do?

 

일단 커널 모드로 진입하여 VAC를 뚫고 핵을 제작해 보겠다. 여기엔 VAC를 리버싱하여 정보를 탈취하는 것 또한 포함된다. 제작이 끝나게 되면 VAC 리버싱 정보를 가지고 유저 모드에서 VAC를 뚫어 보이겠다.

'Security - Real World > Reversing' 카테고리의 다른 글

Windows Kernel Hooking - Part 3  (2) 2024.12.06
Windows Kernel Hooking - II-1  (1) 2024.01.10
Windows Kernel Hooking - I-1  (1) 2024.01.06
Windows Kernel Hooking - I  (2) 2024.01.04