Reversing 시작하기
Reversing이란 주제로 공부를 해보려 한다.
먼저, 리버싱이란 리버스(Reverse) + 엔지니어링(Engineering)을 합쳐 만들어진 단어로 흔히 역공학이라고들 부른다.
리버싱은 어느 분야에서나 쓰일 수 있지만, 해킹 및 보안쪽에서 리버싱이라고 하면 대표적으로 악성코드를 분석하는 일을 떠올릴 수 있다. 바이러스나 웜같은 악성코드를 분석하는데 가장 핵심적으로 사용되고 있다. 리버싱을 공부한다면 향후 직업을 가질 때 이런쪽의 일도 할 수 있지 않을까,,,
처음에 리버싱을 공부해보려고 했을때 가장 먼저 공부해야할 것은 어셈블리어라고 생각한다. 프로그램의 동작과정을 이해하는데는 소스코드를 보는게 가장 확실하다. 그러나 프로그램에서 우리가 흔히 생각하는 고급언어(C, Java 등)의 코드를 볼 수는 없다. 프로그램의 동작 흐름을 정확히 확인하기 위해서는 디버거라는것을 사용하여 분석을한다. 디버거를 사용하기에 앞서 가장 먼저 공부해야하는것이 어셈블리어라고 생각한다. 그 이유는 디버거를 사용하면 디버거는 프로그램의 동작 흐름을 어셈블리어로 보여주기 때문이다.
어셈블리어는 기계어와 근접한 프로그래밍 언어로 흔히 보는 C나 Java와 같은 고급언어보다 훨씬 이해하기 어렵게 생겨먹었다. 어셈블리어의 정의를 찾아보면 기계어와 일대일 대응되는 저급 언어라고 적혀 있는 만큼 기계어와 가깝다. 그 말은 사람보다는 컴퓨터와 가까운 언어라고 볼 수 있다.
그러나 어셈은 확실히 재미없기 때문에 따로 필요한 부분만 중간중간에 공부하겠음!!
리버싱을 공부하려는 첫번째 목적은 역시 CTF이다. 일단은 CTF가 목적이니 만큼 CTF와 최대한 비슷한 환경에서 공부해보려 한다. 그래서 앞으로의 글은 Reversing.kr의 문제를 풀며 공부를 해보려한다. 문론 문제를 풀어가면서 공부하는 내용을 기술할 생각이다.