우리는 정작 무엇을 공부해야 하는 것인지 모른 채 앞의 것만 보고 달려가곤 한다. 하지만 이렇게 진행한다면 ‘열심히’ 했더라도 내가 진정 원하는 것을 성취하지 못했을 가능성이 높다. 여기선 내가 지금까지 발견한 것들의 특징을 글로 적어보겠다.

목표

목표는 윈도우 고수이다. 이 ‘고수’라는 단어의 선택이 참으로 애매한데, 이 ‘고수’라는 것은 어떤 한 프로그램이 윈도우 고유의 기능 혹은 컴퓨터 시스템 (도 포함이다.) 을 잘 활용해서 만든 ‘전략’을 효과적으로 분석하고 그 전략을 우회하거나 타파하는 행위를 빠른 시간 내에, 정확하게 해내는 것을 윈도우 고수라 정의한다.

따라서 이 상위 문서도 제목이 ‘Windows’라 되어 있지만 사실 해킹의 고수가 되고 싶은 것이나 마찬가지인 것이다.

그러러면 무엇을 해야 할까? 그것은 세 가지로 분류할 수 있다.

I - Reversing

가장 중요한 것은 어떻게 분석을 하느냐이다. 이 리버싱이라는 것이 7할 이상, 어쩌면 9할 이상 먹고 들어간다.

내가 유일하게 존경하는 같은 기수 동기인 김 모 군은 다르게 생각할 지 모르겠지만, 우선 사용된 프로그램의 로직을 정확하게 파악하고 분석하는 것이 중요하다.

여기엔 다양한 것이 포함된다: 난독화되어 있는 바이너리를 어떻게 분석해야 마땅한 것인지부터 CRC32, AES, RSA 등의 인터널적인 암호화 구현을 외우는 것부터 시작해서 이분 탐색, DP, 트리 등 알고리즘/자료구조를 많이 아는 것들도 포함된다.

기본적인 ‘리버싱 실력’이 윈도우 고수의 목표에 크게 작용한다는 뜻이다.

II - Windows Internals

두 번째로는 윈도우가 내부적으로 어떻게 작동되는 것인지 미리 알고 있어야 한다. 윈도우의 기본 개념을 모르고 리버싱된 결과를 마주하면 사전 지식이 없는 이상 많은 검색, 오이해 등이 발생할 수 있는데 이는 윈도우 고수에서 빠른 이해와 정확한 분석의 정의와 부합하지 않는다.