Reverse engineering

3 min read

쓰면서 내용을 만드는 글이니 경어를 피하겠습니다

내가 무엇인가를 학습할 때는 항상 역공학을 쓴다. 처음 메신저와 관련된 로봇을 만들고 싶어서 ICQ 프로토콜을 공부할때도 문서보다는 표본을 채집하고 그것으로 부터 근원지를 쫓아갔다. ICQ가 너무 하드코어여서 하다가 말고 MSN으로 넘어갔다.

MSN은 쉬웠다. 역공학에 대해 친근감이 없거나 경험이 없는 사람들은 뭔가 대단하게 보는 경우도 종종 있던데, 이거 진짜 쉬운 작업이다. 아니.. 내가 그렇게 길들여져 있어서 그런지도 모르겠다.

네이트온은 MSNP4 와 비슷한 스타일이였어서 쉽게 쫓아갔다. 패킷을 보면 '아니 이게 뭘까~? (7)' 할만한 게 거의 없었다. 암호화 부분만 빼면. 버디버디는 초기 프로토콜 설계자들에게는 미안하지만 무슨 초딩-_-이 만든 것 같아서 (훌륭하신 초딩 여러분들을 비하할 생각은 없습니다) 분석의 가치도 없을 정도였다.

그 외에 EAP, EAPOL도 문서를 보고 공부하는 것보다는 역공학으로 들어갔을때 훨씬 더 본질을 이해하기 쉬웠고 개발속도도 빨랐다. 게다가 역공학 특성상 버그가 생길 확률도 훨씬 줄어든다. 채집된 표본에 대해서는 막강 무적이다. Test 코드 만들기도 훨씬 쉽다.

HTTP, FTP, POP3, IMAP 등을 역공학으로 접근하다보면, 온몸에 전율이 흐를정도로.. 심플하다; 뚜껑도 열어보기 전에 도전할 의욕을 꺾어버리는 RFC나 Draft 문서를 볼 필요도 없다. 일단 역공학으로 (디스어셈블 수준을 말하는 게 아니지 말입니다 -_-) 전체 흐름을 파악하고 난 뒤 표본 채집을 하기 부담스러운 부분만 표준 문서를 보고 학습하면 엄청나게 시간을 절약할 수 있다.

일단 따라해서 분위기 파악하고 자신감과 흥미를 가진 후, 공부하자는 거다.

나의 역공학적 사고는 초등학교때부터 시작되었다. 수학 시험을 볼 때 사지선다 객관식이라면, 이미 표본 4개를 채집한 것이다. 훈련할 때는 그러면 안되겠지만 (역공학 훈련도 해둘 필요는 있다) 목적이 정답을 찾아 높은 점수를 얻는 것이라면 재빠르게 역공학으로 해치우는 게 편하다. 머리를 안쓰고 노가다만 하면 되니까.

머리 안쓰고 계속 노가다만 하는 것은 대용량(?)이 되면 금방 한계가 드러난다고들 한다. 하지만 노가다 스타일의 역공학을 정말 좋아할 경우, 노가다를 해야 한다는 패러다임은 그대로 두고 노가다를 '빨리' 하는 방법을 연구하면 된다. 노가다를 돕는 도구를 만들고 노가다를 돕는 알고리즘을 만들고 노가다를 돕는 철학과 명언들을 구하여 자신감과 정체성을 형성하고 필요할 경우 노가다를 행하는 주체인 나 자신을 개량하고.

이렇게 살아가면 많은 경험들을 축적할 수 있다. 노가다를 최적화하기 위해 타이핑도 빨라졌고 시간을 단축할 수 있는 것은 모든지 찾아내려 한다. 만약 한계에 부딪혀서 "이건 의지력의 문제야" 로 귀결된다면 의지력을 개선하기 위해 자기개발서를 읽고 그것을 읽어도 해결이 안된다면 좀 더 근원지를 찾아 들어간다. 심리학, 철학 이 과정 자체가 또 역공학이다.

최근 몇년 동안에는 무의식을 제어하려는 버릇 없는(?) 시도까지 했다. 아직 만족스러울 정도까지는 안됐지만, 그동안 투자한 노력이 억울하지 않을만큼 무의식을 제어하는 방법도 얻었다.

주객전도

최근에는 프로그램을 만들기 전에 메뉴얼을 먼저 만든다. 마치 다 완성된 프로그램의 메뉴얼을 쓰듯이 진짜 막 될 기능 안될 기능 넣고 최대한 메뉴얼을 봤을 때 '아 멋있네-!' 정도로 쓴다. 소설 쓰듯이, 내키는대로 멋지게 막무가네로.

그리고 그대로 만든다. 이대로 만들었을 경우 '아 멋있네-!' 가 된다는 것을 알기 때문에 여기서 만들어진 열정은 쉽게 없어지지 않는다. 참 좋은 것은 나중에 프로그램 다 만들고나서 짱-나게 문서 작업 할 필요가 없다는 것! ㅎㅎ

최근 미투데이. 피로가 쌓이고 생활패턴이 완전히 망가져서 M.P. 가 떨어져 미투에 쓸 글이 없다. 그럼 미투에 쓸만한 거리를 찾아본다. 아 찾았다. 그럼 그 행동을 하자. 했다. 좋아 미투에 글 올리자.

생각이 나서 미투데이에 글을 올리는 것이 아니라, 미투데이에 글을 올리기 위해 생각을 한다. 좋은 점은.. 애니웨이- 항상 여러가지 분야에 대해 생각을 하게 되고, 기회에 예민해지는 점이다. 가끔은 '이런거 만들었다' 를 올리고 싶어진다. 포스팅을 하기 위해 프로그램을 만든다. 중학교때부터 이런식으로 살아왔다. 순간순간 정말 재미있게 살아온 거 같다.

요새는.. 내가 미투데이를 하는 게 아니고 미투데이가 날 한다. 미치겠네..--;

철학서에서는 이런 내 삶을 비웃듯이

"입증하면서 사는 것은 더이상 삶을 사는 것이 아니다.** 삶은 순수하고 강인한 아니무스처럼 사는 것이다."**

라고 말하더라.

하지만, 이 포스팅도 내 무의식을 조종하기 위한 하나의 수단이다. 훗-

Comments

10 thoughts shared

01

백일몽

역시... 초 고수. 그런데 역공학 하니깐 토끼군이 생각나지 말입니다.

02
R

rath

토끼군은 잘 지내는지 궁금하지 말입니다.

03

한날

저도 뭔가를 만들기 전에 설명서부터 써요. 남들과 함께 할 때는 기획서를 쓰지만, 혼자 만들 때는 저 설명서가 기획서 역할도 하고요. :D

04
R

rath

한날님과 저는 같은 스타일이네요 :$

05

진석

찌잉~ ㅠ_ㅠ

06
X

xhoto

나도 즐기면서 해야 되는데, 일정이 즐기도록 내버려두지 않네, 아직 안봤다면, 데드라인 한번 읽어보3

07
R

rath

데드라인 yes24 리스트에 넣어놨어. 읽을 책들이 쌓여있다 흑 -_-;

08

지꼴

역시 고수는 다르군요 ㅎㅎㅎ 형님이 처음 프로그래밍을 접햇을때 어떻게 학습하셧는지 상당히 궁금하군요 역시나 일반적인 방법대로 하진 않으셧을꺼같은데.. ㅋㅋㅋ 그리고 주변지식이 전혀 없는 무엇인가를 학습해야 될 때 좀 더 신나게 학습하는 방법이 없을까요?

09
R

rath

나 고수 아닌데 -ㅅ- 그냥 follow your heart!

10
K

KOEI

일단 따라해서 분위기 파악하고 자신감과 흥미를 가진 후, 공부하자는 거다. 미국 최고의 교수들은 어떻게 가르키는가에도 나온 말과 비슷해연~ 모든 잼있어야 즐거운거죠 ㅋㅋ

Continue Reading

Discover more thoughts and insights