Binary Hacks ―ハッカー秘伝のテクニック100選

Binary Hacks ―ハッカー秘伝のテクニック100選 pdf epub mobi txt 电子书 下载 2026

☆☆☆☆☆
出版者:オライリー・ジャパン 作者:高林 哲 出品人: 页数:412 译者: 出版时间:2006-11-14 价格:JPY 33.60 装帧:単行本(ソフトカバー) isbn号码:9784873112886 丛书系列:
图书标签
  • linux
  • hack
  • Programming
  • 计算机科学
  • 计算机
  • binary
  • unix
  • 日文书
  • 二进制
  • 黑客
  • 安全
  • 编程
  • 漏洞
  • 技术
  • 计算机
  • 逆向工程
  • 调试
  • 实践
想要找书就要到 小哈图书下载中心
立刻按 ctrl+D 收藏本页
你会得到大惊喜!!

具体描述

Binary Hacks from O'Reilly Japan is a book about low-level programming on GNU/Linux systems. The goal of the book is to offer useful but not necessarily very well-known techniques as many as we can to readers.

Table of Contents

Chapter 1. Introduction

1. Introduction to Binary Hacks

2. Terminology of Binary Hacks

3. Using "file" to tell file types

4. Using "od" to dump binary files

Chapter 2. Object Files Hacks

5. Introduction to ELF

6. Static libraries and dynamic libraries

7. Using "ldd" to check dependencies of shared libraries

8. Using "readelf" to see information of ELF files

9. Using "objdump" to dump object files

10. Using "objdump" to disassemble object files

11. Using "objcopy" to embed data in executables

12. Using "nm" to see lists of symbols in object files

13. Using "strings" to extract strings from binary files

14. Using "c++filt" to demangle C++ symbols

15. Using "addr2line" to get file names and line numbers by addresses

16. Using "strip" to delete symbols from object files

17. Using "ar" to modify static libraries

18. How to link C and C++ programs

19. How to avoid symbol collision issues

20. Why PIC code is used for shared libraries on GNU/Linux systems

21. Using "statifier" to create pseudo static executables from dynamic executables

Chapter 3. GNU Programming Hacks

22. Introduction to GCC extensions

23. Using inline assembler with GCC

24. Using GCC's builtin functions for optimization

25. Writing "Hello World" without using glibc

26. Using TLS (Thread Local Storage)

27. Switching glibc's internal libraries by system capabilities

28. Changing behavior of programs by linked libraries

29. Reducing exported symbols of libraries

30. Using versioned symbols to manage compatibility

31. Calling functions before main()

32. How GCC generates trampoline code at runtime

33. Allowing and disallowing executable flags of code on stacks

34. Running code on heaps

35. Creating PIE (Position Independent Executable)

36. Writing synchronized methods in C++

37. Creating singletons in C++

38. Understanding g++'s exceptions (throw)

39. Understanding g++'s exceptions (SjLj)

40. Understanding g++'s exceptions (DWARF2)

41. Understanding runtime cost of g++'s exceptions

Chapter 4. Secure Programming Hacks

42. Introduction to GCC secure programming

43. Using "-ftrapv" to detect integer overflows

44. Using "Mudflap" to detect buffer overflows

45. Using "-D_FORTIFY_SOURCE" to detect buffer overflows

46. Using "-fstack-protector" to protect stacks

47. Why you should use unsigned constants to do bitmask

48. Why big shift operations are dangerous

49. Why you should care difference between 0 and NULL on 64-bit systems

50. Thread-safe functions defined by POSIX

51. Writing signal handlers in a safe manner

52. Using "sigwait" to process async signals synchronously

53. Using "sigsafe" to write signal processing safely

54. Using "Valgrind" to detect memory leaks

55. Using "Valgrind" to detect invalid memory access

56. Using "Helgrind" to debug multi-threaded programs

57. Using "fakeroot" to run programs with fake root privilege

Chapter 5. Runtime Hacks

58. How programs reach main()

59. How system calls are called

60. Using "LD_PRELOAD" to switch shared libraries

61. Using "LD_PRELOAD" to wrap existing functions

62. Using "dlopen" to do dynamic linking

63. Showing backtraces with C programs

64. Checking running process's absolute path

65. Checking loaded shared libraries of running programs

66. Checking memory maps of running programs

67. Using "libbfd" to list symbols

68. Demangling C++ symbols at runtime

69. Using "ffcall" to call functions with dynamic signatures

70. Using "libdwarf" to get debug information

71. Using "dumper" to pretty-print struct variables

72. How to load object files yourself

73. Using "libunwind" to control call chains

74. Using "GNU lightning" to generate code in a portable manner

75. Getting addresses of stacks

76. Using "sigaltstack" to handle stack overflows

77. Hooking entering and exiting of functions

78. Modifying contexts of programs in signal handlers

79. Getting values of program counters

80. Rewriting your programs at runtime

81. Using "SIGSEGV" to validate accessibility of addresses

82. Using "strace" to trace system calls

83. Using "ltrace" to trace function calls in shared libraries

84. Using "Jockey" to record and replay programs

85. Using "prelink" to improve programs starting up time

86. Using 'livepatch" to patch running programs

Chapter 6. Profilers and Debuggers Hacks

87. Using "gprof" to profile programs

88. Using "sysprof" to profile systems very easily

89. Using "oprofile" to profile systems

90. Using "GDB" to control running programs

91. Using debugging support of hardware

92. Setting break points in your C programs

Chapter 7. Misc Hacks

93. How Boehm GC works

94. Why you should be careful about memory ordering of processors

95. Light-weight concurrent processing with PCL (Portable Coroutine Library)

96. Counting clock counts of CPUs

97. How floating numbers are expressed in bits

98. What's special about x86's floating numbers instructions

99. Raising signals for operations resulting infinite or NAN.

100. Further reading

这本书聚焦于一系列旨在提升读者技术能力和问题解决能力的技巧集,旨在通过系统化的学习方式引导读者深入理解计算机与网络环境中的各种复杂现象。内容丰富,涵盖了从基础编程语言到高级网络安全防护,再到现代编码实践的各个层面。这些技巧不仅强调理论知识的应用,还注重实用性,帮助读者在实际项目中快速识别问题、采取有效解决方案。书中详细分析了常见的技术挑战,并提供了具体的操作步骤与实验建议,使得每个读者都能通过系统学习逐步提升自己的专业素养。 整个书目以结构化思路展开,每一章均围绕特定主题展开,内容丰富多样,适合不同水平的技术从业者参考。这不仅包括解决常见问题的方法,还强调了如何通过深度学习和实践来拓宽知识面,掌握更先进的技巧。书中特别注重对用户思维方式的引导,通过逻辑推理与分析能力的训练,使读者在面对复杂技术挑战时能够更自信地应对。 书中还包含了大量案例与真实场景,帮助读者将所学知识转化为实际应用。每个章节都经过精心设计,兼顾理论深度与操作性,这样的安排使得学习过程既科学又高效。此外,本书注重强调用户在实践中的思考过程,通过逐步的实验和验证,使读者能够更好地理解技术背后的原理,而不是仅停留在书本内容层面。 对于对编程、网络安全或系统优化感兴趣的读者,这本书提供了一个全面而深入的学习平台。它不仅帮助你掌握当前最先进的技术方法,还培养你的逻辑思维与问题解决能力,适合那些希望在科技领域不断成长的读者。这本书将成为你探索技术世界的重要工具,带领你一步步走向专业化水平。 总体来说,这本书不仅以详尽的内容吸引了广泛的读者,也通过精心设计的结构和实用性,为每一个希望提升自我的读者提供了宝贵的资源和指导。无论是初学者还是经验丰富的技术人员,都能够从中获得有价值的启示和技巧,帮助他们在快速变化的科技环境中游刃有余。

作者简介

目录信息

读后感

☆☆☆☆☆

翻译的实在太差,大量的句子不通顺、用词匪夷所思。很差,是给译者和编辑,大败OReilly的牌子。书的内容对于学习了解Linux开发一些底层知识和技巧还是有价值的,我是把书中的内容作为索引在网上搜索自学的。 期待有负责的人士重新翻译出版。  

☆☆☆☆☆

我不会日语,所以把原书给我我也看不懂。这里只说中文版。今天刚拿到书,看第二章,ELF的规范我看过不止一遍,即使这样我也不知道第二章的前10页在说什么,或者说我很难把这些汉字和我看过的东西联系在一起,即便是我在大脑中进行"中文<--->英文"的转换之后。 这本书的中文用...  

☆☆☆☆☆

随便一翻,看到Hack100,文献。 严重怀疑作者没有相关行业背景, 详解Unix编程 应该是 Advanced Programing in the Unix Environment 国内翻译叫做Unix环境高级编程。 计算机的构成和设计, 应该是Computer Organization and Design. 国内翻译我记得是,计算机组织与设计 D...  

☆☆☆☆☆

《Binary Hacks》 作者:Satoru Takabayashi 出版社:O'Reilly Japan  

☆☆☆☆☆

本书在美国 amazon上的网页: http://www.amazon.com/BINARY-HACKS-Tips-hackers-election/dp/7508387937/ 看到了吗? Author 是:GAO LIN ZHE ( DENG ) JIANG BIN YANG CHAO YI 太诡异了!狗屎翻译跟病毒一样,还具有传染性!

用户评价

☆☆☆☆☆

这本书给我的最大感受是“深度”与“实用性”的完美结合,而且这种结合的方式相当硬核。它没有那种“友好的”引导,而是直接将你抛入问题的核心,然后用一系列极具洞察力的技术点来武装你。我个人对其中关于特定硬件交互和操作系统调度机制的部分特别感兴趣,作者对这些复杂流程的拆解和重构能力令人赞叹。很多时候,我们面对的是一个黑盒子,而这本书就像一把定制的万能钥匙,让你能够绕过表面的抽象层,直接与底层硬件进行“对话”。这种对话带来的信息量是巨大的,它能让你在设计架构时,就预先考虑到那些可能导致系统崩溃或效率低下的“隐形陷阱”。对于那些渴望在技术深度上寻求突破的工程师而言,这本书提供的不仅仅是知识,更是一种思维模式的转变,一种更加主动、更具控制欲的技术心态。

☆☆☆☆☆

说实话,刚开始接触这本书时,我还有些许的保留意见,觉得名字取得太夸张,会不会内容也是华而不实。但随着阅读的深入,这种疑虑彻底烟消云散了。它确实提供了一些非常规但极其有效的技巧,有些甚至是我在业界工作多年都未曾耳闻的“野路子”。这本书的叙事方式非常注重“效果导向”,很多章节的切入点都非常刁钻,直击那些最令人头疼的性能瓶颈或兼容性难题。它不是那种循规蹈矩的教材,更像是一个经验丰富的老兵在给你传授那些从无数次失败中提炼出来的“保命符”。阅读过程中,我经常需要停下来,对照自己的项目环境去验证那些操作的有效性,每验证成功一次,都伴随着一种“原来如此”的顿悟。这本书的价值,在于它提供了一种超越官方文档和主流框架限制的视角,让你得以窥见软件世界更深层、更具操作性的运行机制。

☆☆☆☆☆

翻开这本书的瞬间,我立刻被它那种直截了当的风格所吸引。没有冗长的前言和对历史的追溯,作者似乎直接把我拉到了一个充满挑战的实战现场。内容组织上,它更像是一系列精妙的“工具箱”集合,每个工具都有其特定的应用场景和使用限制。我尤其欣赏它对系统调用层面的深入剖析,很多我们日常编程中被框架或库完美封装起来的底层细节,在这里被毫不留情地剥开,展露出其最原始的形态。这对于那些追求极致性能和对安全边界有深刻理解的开发者来说,无疑是一份珍宝。它迫使你不再满足于仅仅让代码跑起来,而是要去探究它跑起来的每一个时钟周期中,到底发生了什么。这种对细节的偏执和对效率的极致追求,让这本书的价值远远超出了单纯的技术参考手册的范畴,更像是一份深入系统内核的“探险地图”。

☆☆☆☆☆

这本电子书,光看名字就让人热血沸腾,是那种能在深夜里点燃你好奇心的读物。它不像那些充斥着晦涩理论的教科书,反而更像是一本武林秘籍,里面的每一个“招式”都带着一股实战的烟火气。我记得我刚接触它的时候,正值职业瓶颈期,感觉自己会的那些都是皮毛,对那些真正“地下”的技巧一无所知。这本书的厉害之处在于,它没有过多地渲染理论的宏大叙事,而是直接抛出了一个又一个“黑箱”操作的解决方案。比如,书中对内存布局的某些非常规操作,简直是颠覆了我以往的认知,让我明白了为什么有些程序能跑得如此极限和高效。它让你感觉自己像是一个刚刚被授予了某种古老技艺的学徒,迫不及待地想在自己的代码库里试上一试。那种从“知其然”到“知其所以然”的跨越,带来的满足感是难以言喻的。它真的让你从一个代码的使用者,蜕变成一个能够深入挖掘系统底层秘密的“工匠”。

☆☆☆☆☆

要评价这本书,我必须提到它所蕴含的“反主流”精神。在如今这个过度依赖高级抽象层的时代,这本书却逆流而上,鼓励读者去探究那些被遗忘或刻意隐藏的底层细节。它不是教你如何写出更漂亮的面向对象代码,而是教你如何在性能的极限边缘挤出每一滴油水。书中的许多“技巧”,其前提都是对特定平台或编译器的深入理解,这要求读者必须具备扎实的基础功。然而,一旦你掌握了这些技巧,你就会发现自己在面对复杂系统问题时,拥有了别人没有的“上帝视角”。这是一种非常令人兴奋的体验,就好比你从一个只能在高速公路上开车的司机,变成了一个可以随时拆开发动机进行深度调校的机械师。这本书的价值在于,它培养的是一种不被表象所迷惑,勇于深挖本质的工程师精神。

☆☆☆☆☆

好

☆☆☆☆☆

好

☆☆☆☆☆

又一本被翻译糟蹋了的书。。。

☆☆☆☆☆

好

☆☆☆☆☆

又一本被翻译糟蹋了的书。。。

相关图书