출간 한 달 만에 5000부라는 놀라운 판매를 보인 책! 오라일리 재팬의 야심작!
이 책의 주제는 저수준 프로그래밍입니다. 저수준이란 컴퓨터의 관점에서 편리하다는 것을 뜻합니다. 소프트웨어의 세계는 추상화의 개념을 점차 늘려가며 진보해 왔습니다. 어셈블러는 기계어에 대한 추상화이고, C 언어는 어셈블러에 대한 추상화입니다. 또한 C 언어 상위에는 C 언어로 구체화되는 각종 스크립트 언어가 있습니다. 추상화는 저수준의 복잡한 부분을 감추고, 개발자가 보다 생산적이고 안전한 방법으로 프로그래밍하는 방법을 제공합니다.
그러나 저수준의 기술을 전혀 모른 채로 프로그래밍을 할 수 있는 것은 아닙니다. 철저히 성능향상을 추구하거나 최대한 신뢰성을 높이고자 할 때, 가끔 발생하는 ‘의문의 에러’를 해결하고자 할 때는 저수준을 다루어야 할 필요성을 느끼게 됩니다. 유감스럽게도 추상화가 만능은 아니기 때문입니다.
예를 들어, 루비나 펄 스크립트에서 세그먼테이션 폴트(segmentation fault) 에러를 내며 비정상 종료되는 문제가 발생되면, C 언어 레벨로 내려와 원인을 찾아야 합니다. 때로는 특유의 문제가 발생하여 ‘실행시간에 프로그램 자신의 기계어 코드를 재작성’해야 하는 까다로운 기술을 필요로 하는 경우도 있습니다. 만일 저수준의 기술을 모른다면 이러한 문제를 해결할 수 없을 것입니다.
이 책의 목적은 이와 같은 경우에 사용할 수 있는 수많은 노하우, ‘Binary Hack’을 소개하는 것입니다. ‘Binary Hack’이라는 용어는 0 또는 1, 즉 프로그래밍에서 가장 저수준에 있는 ‘Binary’라는 개념에서 유래합니다. 이 책에서는 ‘Binary Hack’을 ‘소프트웨어의 저수준 기술을 이용한 프로그래밍 노하우’라 정의하고, 기본적인 툴 사용법에서 보안 프로그래밍, OS나 프로세서의 기능을 이용한 고도의 테크닉까지 폭넓게 다루고 있습니다.
_「시작하며」에서