쉿, 해커들에겐 비밀이에요! 『리버싱』출간
May 07, 2009소프트웨어를 해부해서 설계와 구현 내용, 심지어 소스코드까지도 알아낼 수 있어서 최근 보안업계의 화두로 떠오른 리버싱.
복제방지기술 무력화와 상용보안대책 무력화로 무장한 해커들의 리버싱 공격 패턴을 파악하기 위한 최신 기술을 담은 해킹 보안 업계 종사자의 필독서.
소프트웨어의 약점을 찾아내 보완하고, 해커의 공격이나 악성코드를 무력화하며, 더 좋은 프로그램을 개발할 수 있도록 프로그램의 동작 원리를 이해하는 데도 효율적인 리버스 엔지니어링의 비밀을 파헤친다.
소프트웨어 리버싱에 관한 명저 『Reversing: Secrets of Reverse Engineering』이 드디어 번역 출간됩니다. 그간 리버싱과 관련해 적지 않은 책들이 출간되어 왔습니다만, 저자가 서문에 밝히고 있듯이 소프트웨어 개발 프로젝트를 수행하며 여러 기업의 코드를 리버싱해온 경험에 바탕한 이 책의 장점은 단 두 가지로 요약할 수 있습니다.
1) 리버싱 관련 내용을 집대성해서 체계적으로 설명해준다.
2) 실전 사례를 들어 설명하므로 이해하고 활용하기가 쉽다.
어떤 것을 분해, 해석해서 정보를 얻어내 알아볼 수 있는 형태로 표현한다는 점에서 역자 윤근용님은 번역 작업을 리버싱에 비유하기도 했습니다. 대상을 정해 이해하고 해부하고 분해하는 작업은 어렵고도 험난한 일입니다.
지령: 해체하고 분석하라!
아이팟비디오를 분해해서 블로그에 올린 대인배 kenu님의 글을 예로 들지 않더라도 도대체 이 내부는 어떻게 동작하는 걸까 궁금해하신 분들 많으시죠. 라디오, 카셋테입 플레이어, 시계 등 소형가전의 동작원리를 알아내기 위해서 드라이버 하나 들고 제품을 분해해보신 "호기심 가득했던" 어린 시절을 떠올려보세요. 물론 호기심으로 "해보는" 것과 충분한 이해와 지식을 바탕으로 분해하는 작업에서 얻어내는 정보는 천양지차일 것입니다. 하지만 근본을 이해하고자 하는 노력, 그 시발점은 비슷하지 않을까 싶네요.
그렇다면 "이놈의 소프트웨어 도대체 어떻게 돌아가는 걸까" 물건이라면 뜯어내 속을 까보고 싶으셨던 적 많았을 테죠. 프로그램이란 게 공구 들고 해체할 수 있는 것도 아닌데 말이죠.;; 최근엔 IDA Pro나 OllyDbg, Windbg 등 디버거 툴이 많아서 이를 이용해 분석해내고 수많은 정보를 얻어내기도 쉬운 세상이 됐습니다. 『실전 윈도우 디버깅』이라는 책도 나와서 이런 툴을 어떻게 하면 효율적으로 활용할 수 있는지를 배워볼 수도 있습니다.
그러나 드라이버나 분석툴이 만능해결책이 될 수 없는 데는 "이 정보를 내가 어떻게 이용할 것인가"하는 문제에 달렸습니다. 이 책에서는 방대한 소스를 펼쳐 놓고 취약점이나 핵심을 짚어내는 능력을 알려줍니다.
공격점/방어점을 찾아라!!
해킹과 보안은 늘 모순, 창과 방패의 양면을 지닙니다. 마치 꼬리에 꼬리를 물고 돌고 도는 동물의 띠와도 같죠. 이 책에서는 방대한 소스코드에서 꼭 필요한 부분을 찾아내서 그 부분을 공격하고 방어하고 다시 또 공격하는 내용을 중첩해 다룹니다.
에러메시지가 뜨는 부분, 암호를 비교하는 부분, 시리얼 넘버를 확인하는 부분 등을 찾아내 브레이크포인트를 걸어 그 부분을 뛰어넘게 함으로써 공격하는 방법도 실례를 들어가며 설명합니다. 크래커가 리버싱을 통해 공격하는 모습을 생생하게 보여주는 거죠. 그리고 다시 소스코드를 분석하지 못하도록 코드를 꼬아놓는 역리버싱을 설명합니다. 하지만 다시 역리버싱된 부분마저 허물어 뜨리는 과정까지 보여주죠.
책을 읽다보면 잠시 헷갈리는 부분이기도 합니다. 그래서 제목에 쓴 것처럼 해커(정확히 말하자면 크래커)들이 알면 위험한 책이 되는 이유랍니다. 청진기를 의사가 심장 박동을 듣는 도구로도 쓸 수 있고, 도둑이 금고문을 딸 때도 쓸 수 있을 겝니다. 허나 누가 어떤 식으로 활용하든 간에 결국은 어쨌든 그 소리를 듣고 이해하는 뇌의 이해 능력을 우리가 갖춰야 하는 게 가장 큰 관건입니다.
어셈블리 언어는 필수?
리버싱을 하는 데 필요한 모든 내용은 이 책에서 거의 다룹니다. 하지만 소스에 접근해 파일을 덤프시켜 뽑아낸 기계어를 완벽하게 이해할 수 있는 사람이 있을까요? 그렇다면 기계어를 인간이 이해할 수 있는 어셈블리 언어나 하이레벨 언어로 바꿔주는 게 시급한 과제일 테죠. 하지만 기계어를 "완/벽/한" 하이레벨로 바꿔주는 툴은 세상 어디에도 없기 때문이죠. 그렇다면 어셈블리 언어를 이해해야 한다는 문제가 과제로 다가옵니다.
단점이라고 한다면 어셈블리 코드를 일일이 설명하기 때문에 페이지를 이리저리 뒤져가면서 보는 불편함이 많아요.
역자 윤근용님이 말하는 이 책의 유일한 단점입니다만, 이는 거꾸로 이 책의 장점이 되기도 합니다. 그만큼 각 코드를 어셈블리 코드로 낱낱이 보여주고 있다는 반증이기도 하니까요.
이 책의 앞 부분 1부와 부록에서는 독자나 개발자가 꼭 알아둬야 할 어셈블리 언어에 대해 자세히 설명하고 있습니다. 그러나 이는 저자가 말하듯이 꼭 알아둬야 할 "기본 사항"에 불과할 뿐입니다. 아는 만큼 보인다는 말처럼 로우레벨 언어에 대해 더 공부하고 싶은 분이 있다면 저희 책 Great Code 제1권. 하드웨어의 이해와 Great Code 제2권. 로우레벨을 고려한 프로그램 최적화를 일독하시기를 권합니다. 두 권 세트도 있으니 참조하시구요. :)
깨려는 자와 막는 자
요즘에는 "리버스 엔지니어링"이 웹 사이트를 해킹하거나 개인 정보를 훔치기 위해서 범죄자들이 사용하는 마술처럼 여겨지고 있다. 하지만 자신의 프로그래밍 기술을 향상시키고자하는 사람이라면 누구나 이 책을 읽어야 한다. 예를 들면, 디버깅과 리버싱은 유사한 점이 상당히 많다. 이 책에서 설명하는 기술을 바탕으로 코드 상의 버그를 추적하고 그것의 원인을 파악해가면서 프로그래밍 기술을 향상 시켜 나갈 수 있다.
(내가 생각하는) 이 책의 하이라이트는 "11장. 보호 기술 파괴" 장이다. 저자는 11장에서 매우 어려운 보호 기술을 리버싱하는 방법을 단계적으로 잘 설명한다. 보호 기술을 리버싱하는 것이 꺼림칙하다면 안심해도 된다. 저자는 애매한 법적인 이슈를 깔끔하게 비켜나가기 위해서 자신이 직접 보호 기술을 포함하고 있는 프로그램을 작성하고 그 프로그램을 이용해서 리버싱을 설명하기 때문이다.
- 아마존 서평 중에서
19권의 에이콘 해킹 보안 책이 나오는 동안 시리즈 에디터를 맡아주신 강유님이 카네기멜론 대에서 2년간의 석사공부를 마치고 박사과정을 시작하셨습니다. 앞으로 3년은 족히 더 자리를 비우게 되실 것 같아 이 책을 번역하신 윤근용님께서 새로이 해킹보안 시리즈 에디터를 맡게 되셨습니다. 앞으로 저희 에이콘은 윤근용 시리즈에디터와 함께 더 좋은 해킹보안 책을 선보이겠습니다. 그동안 고생 많이 해주신 강유님께도 감사드리구요. 강유님은 더욱 멋진 모습으로 컴백하실 걸로 기대할게요. :)
『리버싱: 리버스 엔지니어링 비밀을 파헤치다』는 YES24, 교보문고, 강컴, 인터파크, 알라딘에서 예약판매중입니다.
크리에이티브 커먼즈 라이센스 에이콘출판사에 의해 창작된 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
무플 방지 위원회에서 나왔습니다^^
어셈블리 배워 저도 여기 저기 뚫어 볼까 싶네요
리버싱 익히면 나도 고수? 아님 보안 전문가?
창과 방패의 싸움에서 이기려면 아는게 힘이죠...
액션스크립트 끝나면 꼭 읽어 봐야겠습니다...
와! 드디어 나왔군요!ㅎㅎ
꼭 구입해야 할 책이네요! :)
잘 지내시지요?
그간 블로그는 쭉 봤었는데 댓글은 오랜만에 남깁니다~ㅎㅎ
와... 역공학이네요..
구입 리스트 0순위 등록했습니다 :)
4만원이라니...
4만원이라니...
어서 나왔으면 좋겠어요
빨리 5월 11일이 됬으면
빨리 5월 11일이 됬으면
빨리 5월 11일이 됬으면
원서는 4년전에 나온걸루 기억하는데 그때믄 리버싱이 머야 했는데 지금 이렇게 이슈가 될줄이야 ㅋ