0과 1 사이 (고수준 코드 아래 숨은 실행, 구조, 보안, 메모리의 비밀)

0과 1 사이 (고수준 코드 아래 숨은 실행, 구조, 보안, 메모리의 비밀)

$45.00
Description
임베디드 시스템, 디버깅, 시스템 보안, 최적화 등
각종 기술과 89가지 노하우를 한 권에!
현대의 컴퓨터 시스템은 다층 구조로 이루어집니다. 추상화 레이어를 중첩하면서 발전해 왔으며, 무수한 기능이 실제로 구현되었습니다. 이러한 레이어는 매우 정교하게 설계된 만큼, 단순히 기능만 사용하려 한다면 각 레이어의 동작을 자세히 이해할 필요는 없습니다.

하지만 때로는 추상화 레이어를 벗겨내고 시스템 내부를 자세히 들여다봐야 할 때가 있습니다. 기존 도구만으로는 불가능한 무언가를 구현하려 할 때, 고성능 소프트웨어를 만들려 할 때, 보안 관련 프로그래밍을 할 때 등이 대표적인 예입니다. 추상화 메커니즘 그 자체 또는 추상화에 의해 은폐된 기능을 활용해야 하는 경우가 있기 때문입니다.

무엇보다도, 추상화 레이어와 그 하부 구조를 엿보는 과정은 매우 흥미롭습니다. 지금까지 개발자들이 쌓아온 하나하나의 구성 요소와 그 구조를 탐색해나가다 보면 우리가 몰랐던 무언가를 새롭게 발견할 수 있습니다. 게다가 현재는 많은 소프트웨어의 소스 코드가 대중에 공개되어 있는 만큼, 원한다면 언제든 구성 요소를 교체하거나 수정할 수 있습니다. 이 책은 그러한 저수준 프로그래밍의 세계를 탐색하고 이해하는 데 필요한 다양한 기법, 즉 핵(Hack)을 89가지 엄선해 제공합니다.
저자

가와타아키라외

저자:가와타아키라
(河田旺)
특정용도의칩을위한컴파일러와런타임개발에종사하는소프트웨어엔지니어.때때로핵(Hack)이가미된소프트웨어유지보수를진행합니다.교토대학교정보학석사로대학원에서는형식이론을연구했습니다.일본정보처리추진기구(IPA)의2018년도인재발굴육성사업프로젝트에서검색엔진을개발한경험이있습니다.

저자:고이케유키
(小池悠生)
일본컴퓨터보안서비스제공업체㈜GMOCybersecuritybyIerae의집행임원.청춘을바쳐CTF(CaptureTheFlag)에몰입했으며권위있는해킹대회인DEFCONCTF결승에최연소로참가한기록등을보유하고있습니다.그시절취미는glibc의소스코드를읽는것이었으며좋아하는함수는strfry였습니다.쓰쿠바대학교정보학군정보과학류를조기졸업했습니다.대학시절에는경쟁프로그래밍(Competitiveprogramming)을했으며ICPC국제대학대항프로그래밍콘테스트세계대회에두차례출전했습니다.

저자:와타나베게이치
외국계IT기업에서OS개발에참여중인소프트웨어엔지니어.가상화기술관련팀에서테크리드를맡고있습니다.도쿄대학교정보이공학석사로대학원에서는함수형프로그램검증을연구했고한때는OCaml로C컴파일러를만들거나C++의constexpr로컴파일시점C컴파일러를만들기도했습니다.프로그램의정당성증명기술이나프로그램을격리하는기술등‘안전한계산’을실현하는방법에관심이있습니다.

저자:사에키다카야
OS와VM개발에종사하는소프트웨어엔지니어.도쿄대학정보이공학석사이며가상화를응용한OS변환계층개발프로젝트를통해2016년도미탐슈퍼크리에이터로인정받았습니다.RPG만들기툴로RPG를개발하는것부터시작했지만RPG는완성되지않았고어느새프로그래밍을시작하기에이르렀습니다.~/dev에축적된미완성프로그램수에자신있습니다.

저자:아라타미즈키
수학과출신의소프트웨어엔지니어.회사에서는파이썬코드를관리하지만취미로하스켈(Haskell)컴파일러를만지거나StandardML컴파일러를작성하고있습니다.수학과프로그래밍이교차하는지점을좋아합니다.수치계산에도손을대보려다길을잘못들어부동소수점의늪에빠지고말았습니다.

역자:진명조
NHNCloud시스템엔지니어.번역한책으로는『대규모서비스를지탱하는기술』,『서버/인프라를지탱하는기술』,『클라우드의충격』,『서버/인프라엔지니어를위한DevOps』,『프로세서를지탱하는기술』,『파이썬쉽게,더쉽게』(이상제이펍),『인프라엔지니어의교과서:시스템구축과관리편』,『텐서플로로시작하는딥러닝』,『와이어샤크를이용한패킷캡처철저입문』(이상길벗),『DEBUGHACKS』,『리눅스커널HACKS』(이상와우북스),『BinaryHacks:해커가전수하는테크닉100선』,『입문자를위한루비』(이상ITC),『데이터가보인다』(비제이퍼블릭),『C언어로배우는알고리즘입문』(한빛미디어)등이있습니다.

목차

01장인트로덕션

_#01미지의바이너리읽기
_#02어셈블리입문
_#03다시Hello,World!

02장ELFHack

_#04ELF파일의세그먼트
_#05ld-linux.so의환경변수이용하기
_#06공유라이브러리를검색할디렉터리
_#07dlopen에의한라이브러리실행시로드와응용테크닉
_#08IFUNC를사용하여실행시구현전환하기
_#09ELF의해시테이블구조
_#10TLS의구조이해하기
_#11코어파일읽기
_#12보조벡터를사용하여프로세스에정보넘기기
_#13정적링크와ASLR의관계
_#14sold를사용하여의존하는공유라이브러리나중에링크하기
_#15glibc를Hack하기
_#16patchelf로ELF바이너리의필드수정하기
_#17LIEF를사용하여ELF바이너리수정하기
_#18PT_NOTE를이용한바이너리패치
_#19DWARFExpression실행하기:DWARFI
_#20DWARF로수식평가하기:DWARFII
_#21DWARF에서표준출력으로출력하기:DWARFIII

03장OSHack

_#22실행가능파일과그실행방법
_#23리눅스에서HugePage사용하기
_#24CRIU를사용하여프로세스저장및재개하기
_#25procfs/sysfs의기본파악하기
_#26용도에맞는파일시스템선택하기
_#27특정프로세스에서보이는파일교체하기
_#28FUSE를사용하여파일시스템직접만들기
_#29특수한메모리영역vsyscall과vDSO
_#30KVM을사용하여하이퍼바이저생성하기
_#31리눅스커널Hack입문
_#32UniKernel:애플리케이션을OS로구동하기
_#33UEFI와SecureBoot
_#34GNU툴체인으로기계어파일출력하기
_#35_#30QEMU에서동작하는펌웨어만들기
_#36크롬북에서직접만든펌웨어실행하기

04장컨테이너Hack

_#37리눅스네임스페이스로프로세스분리하기
_#38cgroup으로프로세스의리소스관리하기
_#39chroot/pivot_root로루트디렉터리전환하기
_#40일반유저가root처럼행동하는방법3가지
_#41rootless컨테이너사용법과구조
_#42유저네임스페이스내에서각종네임스페이스생성하기
_#43/proc/PID/root에서컨테이너내의파일에직접접근하기

05장디버거,트레이서Hack

_#44gdbTips
_#45rr을사용하여RecordandReplay디버깅하기
_#46새니타이저로저수준버그발견하기:새니타이저I
_#47AddressSanitizer의구조:새니타이저II
_#48리눅스퍼포먼스분석입문
_#49ftrace를사용하여커널내에서발생하는일트레이스하기
_#50eBPF를사용한트레이싱입문
_#51DBI로실행명령을트레이스및변경하기
_#52IntelPT를사용하여고속으로트레이스얻기

06장보안Hack

_#53seccomp로프로세스에서사용할수있는시스템콜제한하기
_#54Landlock으로비특권프로세스샌드박스만들기
_#55ASLR:잘못된메모리접근에대한보안메커니즘
_#56ROP:메모리손상을악용하는표준적인공격기법
_#57IntelCET:ROP에대한보안메커니즘
_#58ClangCFI를이용하여잘못된제어흐름감지하기
_#59스택프레임의변화관찰하기
_#60퍼징의개요와분류
_#61그레이박스퍼징으로버그및취약성찾기
_#62LibAFL로퍼저구현하기
_#63LibAFL로구현한퍼저개선하기
_#64angr로심벌릭실행하기
_#65BadUSB:사용자를속이는USB디바이스
_#66RowHammer:DRAM의취약성에대한공격기법
_#67Meltdown과Spectre:CPU의취약성에대한공격기법

07장수치표현과데이터처리Hack

_#68정수표현의기초지식
_#69다양한정수표현
_#70부동소수점수의비트열표현이해하기
_#71부동소수점예외
_#72부동소수점수의반올림방식변경하기
_#73부동소수점환경을다루는코드에대한컴파일러최적화와의싸움
_#74NaN깊이파헤치기
_#75부동소수점수의아키텍처별차이다루기
_#76SIMD명령세트의기초지식
_#77SIMD병렬화코드작성하기
_#78SIMD명령을사용한여러가지테크닉

08장언어처리계Hack

_#79NaN을활용하여64비트값에태그붙인값저장하기
_#80ucontext.h로코루틴구현하기
_#81ProfileGuidedOptimization
_#82LD_PRELOAD를사용하여메모리할당자교체하기
_#83ABI와호출규약이해하기
_#84libffi로실행시까지시그니처를알수없는함수호출하기
_#85실행시기계어생성하기
_#86GCC/Clang의내장함수이용하기

09장그밖의Hack

_#87용어집
_#88BinaryHacks에필요한도구
_#89문헌안내

출판사 서평

●1장(인트로덕션):이책의도입부로‘BinaryHacks’에대해설명하고기본적인Hack들을소개합니다.
●2장(ELFHack):리눅스에서널리쓰이는ExecutableandLinkableFormat(ELF)의구조와이를Hack하는방법을소개합니다.
●3장(OSHack):OS,특히리눅스의기능을고도로활용하는Hack을소개합니다.평소사용하던OS의이면을탐험해봅시다.
●4장(컨테이너Hack):컨테이너기술에대한Hack을소개합니다.이제는당연하게활용되는컨테이너기술이지만사실많은BinaryHacks의조합으로실현되고있습니다.
●5장(디버거,트레이서Hack):디버거와트레이서의사용법과그구현에대해소개합니다.
●6장(보안Hack):컴퓨터보안과관련된기술을다룹니다.이분야에서는날마다공격자와방어자가치열하게맞서고있는데그일면을소개합니다.
●7장(수치표현과데이터처리Hack):수치표현과데이터처리에관한Hack을소개합니다.두분야모두컴퓨터자체를직접다루는재미가있습니다.
●8장(언어처리계Hack):일반적인컴파일러교과서에서보기어려운컴파일러및인터프리터주변의주제를다룹니다.
●9장(그밖의Hack):이책에서사용하는용어나도구,참고문헌을해설합니다.이책을읽을때는물론이고다양한BinaryHack에도전할때이정표가될것입니다.

어느시대이든바이너리안의정신은불멸하리라!
새롭게펼쳐지는BinaryHacks의세계로여러분을초대합니다

AI,클라우드,보안,로보틱스등다양한영역의기술이융합하며그어느때보다복잡한시스템을이루어내는시대입니다.생성형AI가프로그래밍과디버깅방식을크게바꾸고자동화를이끌고있지만,하드웨어와소프트웨어의근본원리를이해하려는노력은여전히,그리고오히려더욱중요해지고있습니다.AI가제공하는결과를올바르게해석하고예기치못한상황에대응하기위해서는저수준기술에대한탄탄한기반이반드시필요하기때문입니다.따라서컴퓨터시스템의뿌리라할수있는2진수와저수준프로그래밍의세계는오늘날에도변함없는가치를지니고있습니다.

지난2007년출간된『BinaryHacks:해커가전수하는테크닉100선』은저수준프로그래밍과바이너리해킹분야에서반향을일으켰으며,이분야를배우고자하는많은분에게귀중한안내서로자리잡았던바있습니다.리버스엔지니어링,ELF바이너리분석,링커와로더의동작원리,메모리관리,디버깅전략,보안취약점분석등다양한주제를다루며입문서로서도손색이없는책이었습니다.다만현재는절판되어구하기어려운상황이기에,그동안직접접할기회가없었던분들에게는아쉬움이남을수있는책이기도합니다.

이번에새롭게선보이는『0과1사이(원제:BinaryHacksRebooted)』는그러한공백을메움과동시에,변화된시대와환경에걸맞은지식과기술을담아저수준프로그래밍의지평을한층더넓혀주는책입니다.기존도서와의내용중복을최소화하면서도가상화와컨테이너의저수준메커니즘분석,ASLR·PIE·StackCanary등강화된보안기법과더불어취약점분석,디버깅및트레이싱기법,멀티아키텍처와다양한운영체제환경을아우르는실전적인내용을다루고있습니다.

이책한권만으로도저수준프로그래밍과바이너리세계를깊이있게탐구하기에는충분합니다.나아가저수준기술의근본을이해하고오늘날의복잡한시스템을더욱선명하게들여다보고자하는시스템·소프트웨어·보안엔지니어및연구자여러분께든든한길잡이가되어드릴것입니다.끊임없이변화하는기술환경속에서도흔들리지않는지식의토대로서여러분곁에서오랫동안함께할수있는한권이라생각합니다.다시한번새롭게펼쳐지는BinaryHacks의세계로여러분을정중히초대합니다.
-‘옮긴이의글’중에서