아제리아 랩(Azeria Lab)의 설립자이자 CEO로, Arm 리버스 엔지니어링 및 익스플로잇 관련 강의를 진행하고 있다. 침투 테스트와 보안 위협 대응 분야에서 일했으며, 가상화 스타트업인 코어릴륨(Corellium, Inc)의 최고 제품 책임자(CPO, Chief Product Officer)를 역임한 바 있다.
기업 보안 분야 학사 학위와 엔터프라이즈 보안 분야 석사 학위를 취득했으며 캠브리지에서 Arm 관련 익스플로잇 완화 연구를 수행했다.
해당 분야에서 괄목할 만한 연구 성과를 거둔 덕분에 2018년에는 유럽 기술 부문에서 포브스(Forbes)가 선정하는 ‘30 언더 30(30 under 30)’에 이름을 올렸으며, 포브스의 ‘2020년 사이버 보안 분야 올해의 인물’로도 꼽혔다. 또한 2017년부터 블랙햇(Black Hat) EU 및 US에서 교육 검토 위원회(Training Review Board)의 일원으로 활동 중이다.
이 책의 목적은 여러분이 Arm 인스트럭션 세트와 더 쉽게 친숙해지도록 하는 것이며, 업무에 적용할 수 있는 충분한 지식을 갖도록 하는 것이다. 나는 Arm 참조 매뉴얼을 해부하고 가장 자주 사용하는 인스트럭션과 그 문법 형태를 분류하는 데 많은 시간을 투자했다. 그러나 이 책이 단순히 가장 자주 사용되는 Arm 인스트럭션을 나열한 것만은 아니다. 여기에는 다른 곳, 심지어는 Arm 매뉴얼에서도 찾을 수 없는 설명이 포함돼 있다. Arm 매뉴얼에 작성된 인스트럭션에 대한 기본 설명은 너무 단순하다. MOV나 ADD와 같은 아주 간단한 인스트럭션에는 충분할지도 모르지만, 많이 사용되고 복잡한 오퍼레이션을 수행하는 인스트럭션은 간단한 설명만으로 이해하기 어렵다. 따라서 이 책에 언급되는 많은 인스트럭션은 기저 동작을 설명하는 그림과 함께 다룬다.
만약 여러분이 리버스 엔지니어링 초보자라면 바이너리 파일 포맷, 섹션, 소스 코드에서 머신 코드로 컴파일되는 방식, 의존성 환경 등을 이해해야 한다. 지면과 시간 부족으로 인해 이 책에서 모든 파일 포맷과 운영체제를 다룰 수는 없다. 따라서 여기서는 리눅스 환경과 ELF 파일 포맷에 집중한다. Arm 인스트럭션은 플랫폼이나 파일 포맷에 관계없는 인스트럭션이다. 여러분이 맥 OS(macOS)나 윈도우(Windows)를 위해 컴파일된 Arm 바이너리를 리버스 엔지니어링한다 해도, 인스트럭션의 뜻은 동일하다.
이 책을 집필하는 데는 2년이 넘는 시간이 걸렸다. 팬데믹이 세상을 강타해 모두가 격리에 들어간 2020년 3월에 처음 펜을 들었었다. 지난 2년간 피, 땀, 눈물을 흘리고 나서 비로소 이 책이 생명력을 갖게 된 것을 매우 기쁘게 생각한다. 지속적인 신뢰를 보내주시는 독자 여러분에게 감사할 따름이며, 이 책이 여러분의 리버스 엔지니어링 여행에 부담을 주기보다는 길을 잘 닦아주는 유용한 가이드가 되길 기대해본다.