이미 소장하고 있다면 판매해 보세요.
|
1장. x86과 x64
- 레지스터 집합과 데이터 유형 - 명령어 집합 - 연습문제 - 연습문제 - 시스템 메커니즘 - 걸어서 통과하기 - 연습문제 - X64 - 연습문제 2장. ARM - 기본 특징 - 데이터 유형과 레지스터 - 시스템 레벨 제어와 설정 - 명령어 집합 소개 - 데이터 로드 및 저장하기 - 함수와 함수의 호출 - 산술 연산 - 분기와 조건부 실행 - 기타사항 - 걸어서 통과하기 - 다음 단계 - 연습문제 3장. 윈도우 커널 - 윈도우의 기초 - 리스트 - 비동기 및 애드 혹 실행 - I/O 요청 패킷 - 드라이버의 구조 - 걸어서 통과하기 - 다음 단계 - 연습문제 4장. 디버깅과 자동화 - 디버깅 툴과 기본 명령 - 디버거 툴에서 스크립트 사용하기 - SDK 사용하기 - 유용한 확장 코드와 툴과 자원 5장. 난독화 - 난독화 기법 둘러보기 - 난독화 해제 기법에 대한 연구 - 사례 연구 - 연습문제 |
|
이 책의 구성
이 책은 실제 악성 바이러스와 루트킷에 바탕을 두고 연습문제와 걸어서 통과하기를 제공하고 있다. 그렇게 한 이유는 독자가 새롭게 배운 기법을 즉시 적용할 수 있게 하기 위해서이다. 악성코드 예제는 알파벳 순으로 (예제 A, B, C, ...와 같이) 정리되었으며 대응되는 SHA1 해시 값은 부록에서 찾아볼 수 있다. 예제의 다수는 세계적인 뉴스가 된 유명한 해킹 사건으로 선정되었으므로 흥미로울만하다. 추가로, Metasm에 익숙해지기 위한 두 가지 연습문제용 스크립트를 준비했다. 이를 통해 Metasm 내부 속으로 여행을 떠나게 될 것이다. 연습문제가 이 책에서 가장 핵심적인 부분이라는 것을 깨닫는 것이 중요하다. 이 책은 의도적으로 그런 식으로 쓰여졌다. 만일 연습문제를 처리하지 않고 단순하게 책을 읽어나간다면, 이해하거나 유지할 만한 것이 많지 않을 것이다. 역공학을 배우는 과정은 외국어를 배우는 것과 비슷하다. 외국어를 배우는 첫 번째 단계는 알파벳 글자를 익히는 것인데, 이는 잘 정의된 의미구조를 갖춘 단어를 만드는데 이용된다. 그다음 단계는 문법적인 규칙을 이해함으로써 단어를 함께 결합하여 올바른 문장을 만드는 것이다. 이러한 규칙에 익숙해진 다음엔 여러 개의 문장으로 복잡한 생각을 이어 붙이는 방법을 배우게 된다. 그 결과, 학습자는 서로 다른 스타일로 쓰여진 많은 책을 읽고 그 안에 담긴 사상을 이해할 수 있는 단계에 이르게 된다. 바로 이러한 지점에서 사람들은 (옛 표현, 음성학 같은) 언어의 난해한 측면을 다루는 책을 참고하기도 한다. 역공학 분야의 언어는 아키텍처와 어셈블리어이다. 단어는 어셈블리 명령이다. 문단은 일련의 어셈블리 명령이다. 책은 프로그램이다. 하지만, 책을 완전하게 이해하기 위해서 독자는 단순히 단어와 문법보다 훨씬 더 많은 것을 알아야 한다. 그러한 추가 요소 중에는 산문의 구조와 스타일, 말로 쓰여지지 않은 글쓰기 규칙 같은 것들이 있다. 컴퓨터 프로그램을 이해하려면 어셈블리 명령을 넘어선 개념을 완전하게 통달해야 한다. 효과적인 역공학자가 되기 위한 여정은 길뿐만 아니라 시간이 걸리는 일로써 참을성과 인내를 요한다. 이러한 과정에서 (이 책에 나오는 개념을 이해하지 못하거나, 연습문제를 해결할 수 없어서) 여러 번 실패할지도 모르지만, 포기하지 않기를 바란다. 실패는 성공의 일부임을 기억해야 한다. 이러한 안내와 본격적인 내용을 바탕으로 배우는 여정을 위해 잘 준비해야 한다. |