책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 컴퓨터 공학 > 소프트웨어 공학
· ISBN : 9791169214360
· 쪽수 : 712쪽
· 출판일 : 2025-10-16
책 소개
목차
01장 인트로덕션
_#01 미지의 바이너리 읽기
_#02 어셈블리 입문
_#03 다시 Hello, World!
02장 ELF Hack
_#04 ELF 파일의 세그먼트
_#05 ld-linux.so의 환경 변수 이용하기
_#06 공유 라이브러리를 검색할 디렉터리
_#07 dlopen에 의한 라이브러리 실행 시 로드와 응용 테크닉
_#08 IFUNC를 사용하여 실행 시 구현 전환하기
_#09 ELF의 해시 테이블 구조
_#10 TLS의 구조 이해하기
_#11 코어 파일 읽기
_#12 보조 벡터를 사용하여 프로세스에 정보 넘기기
_#13 정적 링크와 ASLR의 관계
_#14 sold를 사용하여 의존하는 공유 라이브러리 나중에 링크하기
_#15 glibc를 Hack하기
_#16 patchelf로 ELF 바이너리의 필드 수정하기
_#17 LIEF를 사용하여 ELF 바이너리 수정하기
_#18 PT_NOTE를 이용한 바이너리 패치
_#19 DWARF Expression 실행하기: DWARF I
_#20 DWARF로 수식 평가하기: DWARF II
_#21 DWARF에서 표준 출력으로 출력하기: DWARF III
03장 OS Hack
_#22 실행 가능 파일과 그 실행 방법
_#23 리눅스에서 Huge Page 사용하기
_#24 CRIU를 사용하여 프로세스 저장 및 재개하기
_#25 procfs/sysfs의 기본 파악하기
_#26 용도에 맞는 파일 시스템 선택하기
_#27 특정 프로세스에서 보이는 파일 교체하기
_#28 FUSE를 사용하여 파일 시스템 직접 만들기
_#29 특수한 메모리 영역 vsyscall과 vDSO
_#30 KVM을 사용하여 하이퍼바이저 생성하기
_#31 리눅스 커널 Hack 입문
_#32 UniKernel: 애플리케이션을 OS로 구동하기
_#33 UEFI와 Secure Boot
_#34 GNU 툴체인으로 기계어 파일 출력하기
_#35 _#30 QEMU에서 동작하는 펌웨어 만들기
_#36 크롬북에서 직접 만든 펌웨어 실행하기
04장 컨테이너 Hack
_#37 리눅스 네임스페이스로 프로세스 분리하기
_#38 cgroup으로 프로세스의 리소스 관리하기
_#39 chroot/pivot_root로 루트 디렉터리 전환하기
_#40 일반 유저가 root처럼 행동하는 방법 3가지
_#41 rootless 컨테이너 사용법과 구조
_#42 유저 네임스페이스 내에서 각종 네임스페이스 생성하기
_#43 /proc/PID/root에서 컨테이너 내의 파일에 직접 접근하기
05장 디버거, 트레이서 Hack
_#44 gdb Tips
_#45 rr을 사용하여 Record and Replay 디버깅하기
_#46 새니타이저로 저수준 버그 발견하기: 새니타이저 I
_#47 Address Sanitizer의 구조: 새니타이저 II
_#48 리눅스 퍼포먼스 분석 입문
_#49 ftrace를 사용하여 커널 내에서 발생하는 일 트레이스하기
_#50 eBPF를 사용한 트레이싱 입문
_#51 DBI로 실행 명령을 트레이스 및 변경하기
_#52 Intel PT를 사용하여 고속으로 트레이스 얻기
06장 보안 Hack
_#53 seccomp로 프로세스에서 사용할 수 있는 시스템 콜 제한하기
_#54 Landlock으로 비특권 프로세스 샌드박스 만들기
_#55 ASLR: 잘못된 메모리 접근에 대한 보안 메커니즘
_#56 ROP: 메모리 손상을 악용하는 표준적인 공격 기법
_#57 Intel CET: ROP에 대한 보안 메커니즘
_#58 Clang CFI를 이용하여 잘못된 제어 흐름 감지하기
_#59 스택 프레임의 변화 관찰하기
_#60 퍼징의 개요와 분류
_#61 그레이박스 퍼징으로 버그 및 취약성 찾기
_#62 LibAFL로 퍼저 구현하기
_#63 LibAFL로 구현한 퍼저 개선하기
_#64 angr로 심벌릭 실행하기
_#65 BadUSB: 사용자를 속이는 USB 디바이스
_#66 Row Hammer: DRAM의 취약성에 대한 공격 기법
_#67 Meltdown과 Spectre: CPU의 취약성에 대한 공격 기법
07장 수치 표현과 데이터 처리 Hack
_#68 정수 표현의 기초 지식
_#69 다양한 정수 표현
_#70 부동소수점 수의 비트열 표현 이해하기
_#71 부동소수점 예외
_#72 부동소수점 수의 반올림 방식 변경하기
_#73 부동소수점 환경을 다루는 코드에 대한 컴파일러 최적화와의 싸움
_#74 NaN 깊이 파헤치기
_#75 부동소수점 수의 아키텍처별 차이 다루기
_#76 SIMD 명령 세트의 기초 지식
_#77 SIMD 병렬화 코드 작성하기
_#78 SIMD 명령을 사용한 여러 가지 테크닉
08장 언어 처리계 Hack
_#79 NaN을 활용하여 64비트 값에 태그 붙인 값 저장하기
_#80 ucontext.h로 코루틴 구현하기
_#81 Profile Guided Optimization
_#82 LD_PRELOAD를 사용하여 메모리 할당자 교체하기
_#83 ABI와 호출 규약 이해하기
_#84 libffi로 실행 시까지 시그니처를 알 수 없는 함수 호출하기
_#85 실행 시 기계어 생성하기
_#86 GCC/Clang의 내장 함수 이용하기
09장 그 밖의 Hack
_#87 용어집
_#88 Binary Hacks에 필요한 도구
_#89 문헌 안내



















