간편결제, 신용카드 청구할인
네이버페이 1%
(네이버페이 결제 시 적립)
NH(올원페이)카드 12% (19,010원)
(3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (15,120원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (17,280원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (19,440원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (20,090원)
(최대할인 3만원 / 3만원 이상 결제)
Close

BINARY HACKS : 해커가 전수하는 테크닉 100선

원제 : BINARY HACKS

2013년 9월 9일 이후 누적수치입니다.

판매지수 63
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

24,000원

  • 21,600 (10%할인)

    1,200P (5%적립)

  • 이벤트/기획전

  • 연관도서

  • 사은품(3)

출판사 서평

이 책의 내용 및 특징
출간 한 달 만에 5000부라는 놀라운 판매를 보인 책! 오라일리 재팬의 야심작!

이 책의 주제는 저수준 프로그래밍입니다. 저수준이란 컴퓨터의 관점에서 편리하다는 것을 뜻합니다. 소프트웨어의 세계는 추상화의 개념을 점차 늘려가며 진보해 왔습니다. 어셈블러는 기계어에 대한 추상화이고, C 언어는 어셈블러에 대한 추상화입니다. 또한 C 언어 상위에는 C 언어로 구체화되는 각종 스크립트 언어가 있습니다. 추상화는 저수준의 복잡한 부분을 감추고, 개발자가 보다 생산적이고 안전한 방법으로 프로그래밍하는 방법을 제공합니다.

그러나 저수준의 기술을 전혀 모른 채로 프로그래밍을 할 수 있는 것은 아닙니다. 철저히 성능향상을 추구하거나 최대한 신뢰성을 높이고자 할 때, 가끔 발생하는 ‘의문의 에러’를 해결하고자 할 때는 저수준을 다루어야 할 필요성을 느끼게 됩니다. 유감스럽게도 추상화가 만능은 아니기 때문입니다.

예를 들어, 루비나 펄 스크립트에서 세그먼테이션 폴트(segmentation fault) 에러를 내며 비정상 종료되는 문제가 발생되면, C 언어 레벨로 내려와 원인을 찾아야 합니다. 때로는 특유의 문제가 발생하여 ‘실행시간에 프로그램 자신의 기계어 코드를 재작성’해야 하는 까다로운 기술을 필요로 하는 경우도 있습니다. 만일 저수준의 기술을 모른다면 이러한 문제를 해결할 수 없을 것입니다.

이 책의 목적은 이와 같은 경우에 사용할 수 있는 수많은 노하우, ‘Binary Hack’을 소개하는 것입니다. ‘Binary Hack’이라는 용어는 0 또는 1, 즉 프로그래밍에서 가장 저수준에 있는 ‘Binary’라는 개념에서 유래합니다. 이 책에서는 ‘Binary Hack’을 ‘소프트웨어의 저수준 기술을 이용한 프로그래밍 노하우’라 정의하고, 기본적인 툴 사용법에서 보안 프로그래밍, OS나 프로세서의 기능을 이용한 고도의 테크닉까지 폭넓게 다루고 있습니다.
_「시작하며」에서

이 책의 구성
1장. 소개
Binary Hack의 개념을 익힌다. 이 책에 사용된 다양한 기술용어에 대한 해설과 Binary Hack의 가장 기본이 되는 툴을 소개하고 있다.

2장. 오브젝트 파일 Hack
실행 파일과 공유 라이브러리의 본체인 오브젝트 파일에 대해 심도 있게 설명한다. 먼저, GNU/리눅스 등에서 사용되는 ELF에 대해 해설하고, 라이브러리에 관한 Hack을 소개한다. 오브젝트 파일 Hack의 기본적인 GNU Binutils의 사용법도 설명하고 있다.

3장. GNU 프로그래밍 Hack
GNU 개발환경, 이를테면 GCC, glibc를 시작으로 하는 GNU 소프트웨어에는 다양한 확장기능이 있다. 이 장에서는 GNU 개발환경의 힘을 최대한 끌어내는 테크닉에 대해 알아본다.

4장. 보안 프로그래밍 Hack
보안 프로그램을 작성하는 것은 현대에 가장 중요한 과제 중 하나다. 이 장에서는 보안 허점을 막기 위한 테크닉과 보안 허점을 발견하고 퇴치하는 방법을 소개한다.

5장. 런타임 Hack
프로그램 실행 시간에 프로그램이 자신의 코드를 재작성하거나, 자신의 상태를 조사할 수 있다면 재미있지 않겠는가? 이 장에서는 실행 중인 프로그램에 대해 적용 가능한 여러 가지 테크닉을 소개한다.

6장. 프로파일러/디버거 Hack
이 장에서는 프로파일러를 사용해 프로그램의 병목점을 알아내는 방법 및 고도의 디버거 사용법을 소개하고 있다. 또한 프로파일러로 gprof, sysprof, oprofile을, 디버거로는 GDB를 다루고 있다.

7장. 그 밖의 Hack
이 장에서는 위에서 분류할 수 없었던 Hack을 다룬다. 마지막 Hack은 참고문헌 안내로 앞으로의 Binary Hack 안내서가 되어 줄 서적과 웹사이트를 소개하고 있다.

이 책의 이용법
이 책은 처음부터 순서대로 읽거나 목차에서 재미있을 것 같은 항목을 선택해서 먼저 읽어도 상관없다. 만일 바이너리 기술에 관한 기초적인 지식을 얻고자 한다면 먼저 1장을 대강 읽어 봐도 좋다. 또한 프로그래밍 경험이 아직 많지 않다면 각 장의 초급 Hack을 먼저 읽는 것이 좋다.

이 책에서 다루는 것과 다루지 않는 것
이 책에는 Binary Hacking에 불가결한 기본 툴의 사용법에서 GCC 확장기능, OS 시스템콜, 인라인 어셈블러 등을 이용한 고도의 테크닉을 주로 다루고 있다. 대상 플랫폼은 유닉스(UNIX) 또는 GNU/리눅스에 초점을 맞추고 있다. 윈도우(Windows)의 Win32 API를 이용한 Binary Hacking은 거의 다루지 않지만, Cygwin을 이용한 GNU 기반의 개발환경에서는 이 책에서 다룬 Hack의 대부분을 적용할 수 있을 것이다.

목차

1장 소개 1
1. Binary Hack 입문 1
2. Binary Hack 용어 정리 4
3. file - 파일 종류 확인 12
4. od - 바이너리 파일 덤프 15

2장 오브젝트 파일 Hack 21
5. ELF 입문 21
6. 정적 라이브러리와 공유 라이브러리 34
7. ldd - 공유 라이브러리 의존관계 확인 37
8. readelf - ELF 파일 정보 보기 42
9. objdump - (1) 오브젝트 파일 덤프 45
10. objdump - (2) 오브젝트 파일 역어셈블 50
11. objcopy - 실행 파일에 데이터 삽입하기 55
12. nm - 오브젝트 파일에 포함된 심볼 확인 56
13. strings - 바이너리 파일에서 문자열 추출 63
14. c++filt - C++ 심볼 demangle 65
15. addr2line - 주소에서 파일명과 행 번호 얻기 66
16. strip - 오브젝트 파일에서 심볼 삭제 68
17. ar - 정적 라이브러리 다루기 70
18. C와 C++ 프로그램 링크 방법 71
19. 링크할 때 심볼 충돌 방지하기 78
20. GNU/리눅스 시스템에서 공유 라이브러리에 PIC를 사용하는 이유 85
21. statifier - 동적 실행 파일에서 의사 정적 실행 파일 생성 89

3장 GNU 프로그래밍 Hack 93
22. GCC 확장기능 입문 94
23. GCC로 인라인 어셈블러 사용 100
24. GCC 빌트인 함수를 이용한 최적화 105
25. glibc를 이용하지 않은 “Hello World” 109
26. TLS(Thread Local Storage) 114
27. glibc로 시스템 환경에 따라 라이브러리 전환하기 116
28. 링크된 라이브러리에 따라 프로그램 동작 바꾸기 120
29. 라이브러리 외부에 공개할 심볼 제한 122
30. 호환성 관리를 위해 버전별 심볼 사용 126
31. main( ) 함수 이전에 함수호출하기 134
32. 실행 중에 GCC가 트램펄린 코드를 생성하는 방법 138
33. 스택에 있는 코드의 실행 허용/금지 140
34. 힙에 있는 코드 실행 142
35. PIE(Position Independant Executable, 위치독립실행형식) 생성 144
36. C++로 synchronized method 작성 147
37. C++로 싱글톤 생성 152
38. g++ 예외 처리 이해(throw) 158
39. g++ 예외 처리 이해(SjLj) 160
40. g++ 예외 처리 이해(DWARF2) 168
41. g++ 예외 처리의 실행 시간 비용 172

4장 보안 프로그래밍 Hack 177
42. GCC 보안 프로그래밍 입문 177
43. -ftrapv로 정수 연산 오버플로 검출 182
44. Mudflap - 버퍼 오버플로 검출 186
45. -D_FORTIFY_SOURCE로 버퍼 오버플로 검출 190
46. -fstack-protector로 스택 보호 194
47. bitmask 사용 시 unsigned를 사용하는 이유 198
48. big shift 작업이 위험한 이유 200
49. 64비트 환경에서 0과 NULL의 차이점 202
50. POSIX 스레드 안전한 함수 205
51. 시그널 핸들러 안전하게 작성하기 209
52. sigwait - 비동기 시그널을 동기적으로 처리하기 215
53. sigsafe - 안전하게 시그널 처리하기 220
54. Valgrind - (1) 메모리 누수 검출하기 230
55. Valgrind - (2) 비정상적인 메모리 접근 검출하기 233
56. Helgrind - 멀티스레드 프로그램 디버그하기 237
57. fakeroot - 거짓 root 권한으로 프로세스 실행하기 241

5장 런타임 Hack 245
58. 프로그램이 main( )에 도달하기까지의 과정 245
59. 시스템콜을 호출하는 방법 255
60. LD_PRELOAD로 공유 라이브러리 교체하기 259
61. LD_PRELOAD로 기존 함수 래핑하기 262
62. dlopen - 실행 중에 동적 링크하기 265
63. C로 백트레이스 표시 270
64. 실행 중인 프로세스의 절대경로 확인 276
65. 실행 중인 프로세스에서 로드하고 있는 공유 라이브러리 확인 280
66. 실행 중인 프로세스의 메모리 맵 확인 286
67. libbfd - 심볼 열거하기 292
68. 실행 중에 C++ 심볼 demangle하기 297
69. ffcall - 동적 시그니처로 함수호출 300
70. libdwarf - 디버그 정보 얻기 305
71. dumper - 구조체 데이터를 보기 쉽게 덤프하기 310
72. 오브젝트 파일을 직접 로드하기 314
73. libunwind - 콜 체인 제어하기 322
74. GNU lightning - 실행 중에 이식 가능한 코드 생성하기 326
75. 스택 영역의 주소 얻기 329
76. sigaltstack - 스택 오버플로에 대처하기 335
77. 함수 진입(enter)/종료(exit) 후킹하기 347
78. 시그널 핸들러로 프로그램 컨텍스트 변경하기 350
79. 프로그램 카운터 값 얻기 352
80. 자기수정코드로 프로그램 동작 변경 353
81. SIGSEGV로 주소 접근 유효성 확인 357
82. strace - 시스템콜 추적하기 360
83. ltrace - 공유 라이브러리의 함수호출 추적하기 362
84. Jockey로 리눅스 프로그램의 실행을 기록, 재생하기 364
85. prelink - 프로그램 기동 향상시키기 366
86. livepatch - 실행 중인 프로세스 패치하기 370

6장 프로파일러쪾디버거 Hack 379
87. gprof - 프로파일 조사하기 379
88. sysprof - 시스템 프로파일 조사하기 383
89. oprofile - 상세한 시스템 프로파일 얻기 385
90. GDB - 실행 중인 프로세스 제어하기 390
91. 하드웨어 디버그 기능 사용하기 393
92. C 프로그램에서 중단점 설정하기 397
7장 그 밖의 Hack 399
93. Boehm GC의 구조 399
94. 프로세서의 메모리 정렬 406
95. PCL을 이용한 경량 병행처리 411
95. CPU 클록 수 세기 414
97. 부동소수점 수의 비트 표현 419
98. x86 부동소수점 연산자의 특성 421
99. 결과가 무한대 또는 NaN인 연산에서 시그널 발생하기 426
100. 문헌안내 429

찾아보기 439

저자소개

야시 사토루(Satoru Takabayashi) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

우카이 후미토시(Fumitoshi Ukai) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

사토 유스케(Yusuke Sato) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

하마지 신이치로(Shinichiro Hamaji) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

슈도 카즈유키(Kazuyuki Shudo) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

현재 씨디네트웍스에 근무하고 있으며, [서버/인프라 엔지니어를 위한 DevOps], [서버/인프라를 지탱하는 기술], [파이썬 더 쉽게, 더 깊게], [대규모 서비스를 지탱하는 기술], [클라우드의 충격], [인프라 엔지니어의 교과서: 시스템 구축과 관리편]을 포함하여 13종의 기술 서적을 번역하였다. IT 산업의 미시적인 영역과 거시적인 영역을 아우르는 통찰력을 갖게 되기를 꿈꾸고 있으며, 최근에는 머신러닝을 비롯한 인공지능(AI)의 대중화에 주목하고 있다.

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    0.0 (총 0건)

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용