본문 바로가기

ETC/추천

자신만의 좋은 분석 도구를 선택하는 기준

오랬만에 스터디하는 친구들을 가르켜 주기 위해 책을 흟다가 

여러번 반복해봤던 책 임에도 불구하고 또 한번 경악을 금치 못해 블로그에 글을 쓰게 되었다. 


리버싱 입문 툴 설명하는 페이지(http://winner75.tistory.com/6)에서 이야기한 적이 있듯이

분석가들은 자신만의 툴이 만들어져 있다. 


출처(리버싱 핵심 원리 : 악성 코드 분석가의 리버싱 이야기)

아래 내용은 리버싱 핵심 원리에 나오는 내용이다.  다시 봐도 명언이고 나에게 맞춰 자체 커스텀을 하였다. 


1) 좋은 분석 도구를 선택하는 기준

   기술자(엔지니어)들은 자신만의 작업환경과 손에 익은 도구(장비)가 있습니다. 

   기술자란 특정 업무를 위해서 필요한 도구를 아주 능숙하게 다룰 줄 아는 사람들입니다.

   같은 도구를 사용하더라도 기술자의 능력에 따라서 전혀 다른 결과를 보여줍니다.


   또한 기술자들은 각자 자신만의 도구를 가지고 있으며 한 번 손에 익힌 도구를 되도록 오래 쓰고 웬만해서는 

   바꾸려 하지 않습니다(바꿀 때도 될 수 있으면 같은 회사의 후속 제품으로 바꾸려 하지요). 남의 도구, 

   남의 작업 환경에서 일을 하면 아무래도 불편하다고 생각합니다. 

   즉, 자신만의 작업환경과 자신만의 도구가 갖춰져야 그 기술자의 진정한 실력이 100% 발휘된다고 할 수 있습니다.


2) 리버서 (Reverser)라고 불리는 리버스 코드 엔지니어들은 어떨까요? 

   리버서도 역시 IT 엔지니어 범주에 들어가기 때문에 위에서 언급한 일반적인 기술자의 성향과 다를바가 없습니다.

   리버싱을 하기 위한 도구의 종류만도 수십가지가 넘으며 각 종류 별로 다양한 제품이 존재합니다.

   또한 IT 분야의 특성상 계속해서 새로운 도구가 개발되고 있습니다.

   ※ 2017년 기준 현 시점에서 본다면 몇백가지가 되겠네요.


3) 아래에 저만의 도구 선택 기준(가이드)을 제시합니다. 

   여러분도 자신만의 기준을 세워보기바랍니다.


   - 도구 개수 최소화

   남들이 쓴다고 해서 기능을 알지도 못하는 도구를 잔뜩 가지고 있어 봐야 도움이되지 않습니다.

   자신에게 필요한 도구만을 각 종류별로 하나씩만 사용하는 것이 좋습니다. 

   처음에는 자신의 실력에 맞는 것만을 선택하고 차츰 하나씩 늘려가면 됩니다.


   - 기능을 철저히 익힌다.

   아무리 좋은 도구라도 시용할 줄 모르면 무용지물입니다.

   자신이 이미 가지고 있는 도구에서 제공되는 기능인데도 그걸 알지 못하고 다른 도구를 찾는 경우가 많습니다. 

   일단 도구를 선택한 후에는 제공되는 매뉴얼을 일단 정독해보는 것이 좋습니다.


   - 도구의 핵심 동작 원리를 이해한다.

   도구를 더 잘 사용하기 위해서 동작 원리를 이해하는 것이 좋습니다. 

   이 부분을 간과히는 경우가 매우 많습니다. 하지만 높은 수준의 리버싱 실력을 쌓기 위해서는 필수적인 사항입니다. 

   예를 들어 디버거의 동작원리를 이해하고 있으면 안티 디버깅 기법을 잘 회피할 수 있습니다. 

   원리를 이해하지 못하고 도구에만 의존하면 간단한 트릭도 해결하지 못하고 다른 도구를 찾아 나서야 합니다.

   소위 말히는 ‘도구의 노예 ’가 되는 것이지요



★ 숙련도의 중요성


예를 들어 설명드리겠습니다.

debug.exe라는 프로그램을 들어보았나요?

MS-DOS시절부터 존재하던 16비트 디버거입니다(Windows XP에도 존재합니다). 


위 화면을 보시게 되면 간단합니다. 단순하지요? 

제가 아는 어떤 분이 debug.exe로 16비트 DOS 프로그램을 분석하는 걸 본 적이 있습니다.

뭔가를 실행시키더니 키보드를 다~~다다다 두들기면서 화면이 번쩍 번쩍 넘어가는데,

바로 옆에서 지켜보면서도 무슨 작업을 하는지 도저히 알 수 없었습니다

(제 눈이 그분의 작업 속도를 따라가지 못한거죠). 

처음에는 실행 되는 프로그램이 debug.exe 인지 몰랐습니다

(전 그때 당시 이미 debug.exe를 한달 정도 써본 경험이 있었음에도 불구하고 말이죠)

그분이 시용한 프로그램이 라는 결 알고 충격에 휩싸였었죠 

‘저런 단순한 debug.exe만으로 이 일을 이렇게 빨리 해냈단 말인가?’하고 말이죠.

그 이후로 제가 어떤 도구를 고를 때 나름대로의 기준을 세우게 되었습니다. 


그리고 하나의 깨달음을 얻었습니다.


“평범한 도구라도 극한까지 연마하면 천하에 다시 없는 비범한 도구가 된다”


마치 무림고수가 수련에 수련을 거듭해서 검을 버리고 

결국에는 초/목/죽/석을 모두 검처럼 사용할 수 있듯이 말이죠. 



...다시 한번 깊이 생각 해 보기 바란다.