µn¤J
¡U
µù¥U
¡U
·|û¤¤¤ß
¡U
µ²±b
¡U
°ö°V½Òµ{
Å]ªk§Ì¤l
¡U
¦Û¸ê¥Xª©
¡U
¹q¤l®Ñ
¡U
«ÈªA¤¤¤ß
¡U
´¼¼z«¬¥ßÊ^·|û
®Ñ¦W
¥Xª©ªÀ
§@ªÌ
isbn
½s¸¹
5050Å]ªk²³Äw
|
NG®Ñ«°
|
°ê»Ú¯Å«~µP½Òµ{
|
Àu´f³qª¾
|
ÅRÆE^¶¯µ¼Öºë¿ï
|
iPhone 4S JB¸Ñ¸T¯µ³N¡GCydia ¶W³nÅé300+
¦¹§@ªÌµL¬ÛÃö®ÑÄy
¤å¾Ç¤p»¡
¤å¾Ç
¡U
¤p»¡
°ÓºÞ³Ð§ë
°]¸g§ë¸ê
¡U
¦æ¾P¥øºÞ
¤H¤åÃÀ§{
©v±Ð¡Bõ¾Ç
ªÀ·|¡B¤H¤å¡B¥v¦a
ÃÀ³N¡B¬ü¾Ç
¡U
¹q¼vÀ¸¼@
Ày§Ó¾i¥Í
ÂåÀø¡B«O°·
®Æ²z¡B¥Í¬¡¦Ê¬ì
±Ð¨|¡B¤ß²z¡BÀy§Ó
¶i׾Dzß
¹q¸£»Pºô¸ô
¡U
»y¨¥¤u¨ã
Âø»x¡B´Á¥Z
¡U
x¬F¡Bªk«ß
°Ñ¦Ò¡B¦Ò¸Õ¡B±Ð¬ì¥Î®Ñ
¬ì¾Ç¤uµ{
¬ì¾Ç¡B¦ÛµM
¡U
¤u·~¡B¤uµ{
®a®x¿Ë¤l
®a®x¡B¿Ë¤l¡B¤H»Ú
«C¤Ö¦~¡Bµ£®Ñ
ª±¼Ö¤Ñ¦a
®È¹C¡B¦a¹Ï
¡U
¥ð¶¢®T¼Ö
º©µe¡B´¡¹Ï
¡U
¨î¯Å
Binary Hacks¡GÀb«È¯µ¶Ç§Þ¥©¤@¦Ê©Û
§@ªÌ¡G
°ª林哲¡BñϹ}文敏¡B佐ÃÃ祐介等
ĶªÌ¡G
Studio Tib.
¤ÀÃþ¡G
¹q¸£»Pºô¸ô
¡þ
ºî½×
ÂO®Ñ¨t¦C¡Gµ{¦¡³]p
¥Xª©ªÀ¡G
¬ü°Ó¼ÚµÜ§¤¤¤å®Ñ
¥Xª©¤é´Á¡G2013/6/1
ISBN¡G9789862767665
®ÑÄy½s¸¹¡Gkk0353189
¶¼Æ¡G420
©w»ù¡G
580
¤¸
Àu´f»ù¡G
82
§é
476
¤¸
®Ñ»ùY¦³²§°Ê¡A¥H¥Xª©ªÀ¹ê»Ú©w»ù¬°·Ç
µ´ª©®Ñ
µ´ª©®Ñ¡G½T©w¤£¦Aª©ªº°Ó«~¡A¶È´£¨Ñ®ÑÄy¸ê°T°Ñ¦Ò¡C
µû»ù¼Æ¡G
(½Ð±N·Æ¹«²¾¦Ü¬P¬P³B¶i¦æµû»ù)
¥Ø«e¥§¡µû»ù¡G
¤å¦r³sµ²
½Æ»s»yªk
Binary Hacks¡GÀb«È¯µ¶Ç§Þ¥©¤@¦Ê©Û
¤º®e²¤¶
®ÑÄy¥Ø¿ý
¦PÃþ±ÀÂË
Binary Hacks¡GÀb客秘傳技巧一百招 本書的主ÃD是底層的程式¶}發技³N¡C底層指的是接ªñ¡u¨ª»r¡v的¹q¸£硬Åé¡C ³nÅé的世界是ÂǵÛ不斷堆疊¡u抽¶H化¡v¦Ó¶i步的¡C 組合»y¨¥是機械»y¨¥的抽¶H化¡BC »y¨¥是組合»y¨¥的抽¶H化¡C ¦Ó在 C »y¨¥之上¡AÁÙ有³\多以 C 實作的各種 script »y¨¥¡C 抽¶H化可將底層的½ÆÂø³¡份ÁôÂð_來¡A 為¶}發ªÌ提供更具生產力¡B安全性更°ª的程式¶}發手段¡C 但是¡A也不¯à因為³o樣就»{為把底層的技³N完全忘光也¯à¶}發程式¡C Y想°l求性¯à極¡B盡可¯à提°ª可¾a度¡B想¸Ñ決偶爾發生的¡u神秘¿ù»~¡v¡A 就不得不±對底層細節了¡C可惜的是¡A抽¶H化並«D¸U全的¸Ñ決之¹D¡C 比如»¡¡ARuby »P Perl 寫的 script Y是發生 segmentation fault 異常結束的¸Ü¡A 就»Ýn下到 C »y¨¥³o層尋找原因¡C有時也會¹J到特殊的問ÃD¡A »Ýn發揮¡u在執¦æ的時候改寫程式¦Û己的機械碼¡v³o種棘手的技巧¡C 如果不知¹D底層技³N的¸Ü¡A就沒¿ì法±對³o些問ÃD了¡C 本書的目標¡A就是介紹³o些場±之中¯à夠發揮威力的眾多³Z竅¡A 也就是¡uBinary Hacks¡v¡CBinary Hack 的名稱是來¦Û 0 »P 1¡A 也就是程式¶}發時位於最底層的 binary Æ[念¡C 本書把 Binary Hacks 定義為¡u¹B用底層³nÅé技³N的程式³]p³Z竅¡v¡A 廣泛涵»\了基本工具的使用方式¡B安全ijÃD¡B以及¹B用 OS »P³B理器功¯à等¶i¶¥Ä³ÃD¡C 以往¡A³oÃþ³Z竅³£沒有整理°_來¡A像是¡u知¹D的人就會知¹D¡v的東¦è¡C 本書就是嘗¸Õ把³o些³Z竅¶°合°_來¡A使它們成為½Ö³£可以¹B用的工具¡C 本書主n是收¶°在實»Ú情形下幫得上忙的 hacks¡A但也提到不少沒什»ò用¡B 卻很有½ì的 hacks¡C希望您¯à³z¹L本書學到有用的³Z竅¡BÅé會底層技³N的½ì味¡C
±ÀÂ褂 °õµ§¸s ¼g¦b«e± Chapter 1 ¡@·§½× 1. Binary Hack ¤Jªù 2. Binary Hack ¥Î»yªº°ò¦ª¾ÃÑ 3. ¥H file ÀˬdÀɮ׺ØÃþ 4. ¥H od ¶É¦L binary ÀÉ Chapter 2 ¡@Object File Hacks 5. ELF ¤Jªù 6. ÀRºA¨ç¦¡®w»P¦@¨É¨ç¦¡®w 7. ¥H ldd Àˬd¦@¨É¨ç¦¡®wªº¨Ì¦sÃö«Y 8. ¥H readelf Åã¥Ü ELF Àɮתº¸ê°T 9. ¥H objdump ¶É¦L object file ¤º®e 10. ¥H objdump ¤Ï²ÕĶ object file 11. objcopy ¹ï°õ¦æÀÉ´O¤J¸ê®Æ 12. ¥H nm Àˬd object file ¤º§tªº symbols 13. ¥H strings ©â¥X binary Àɮפºªº¦r¦ê 14. ¥H c++filt ±N C++ ªº²Å¸¹ demangle 15. ¥H addr2line §â¦ì§}Âà´«¦¨ÀɦW»P¦æ¸¹ 16. ¥H strip ²¾°£ object file ªº symbols 17. ¥H ar ¾Þ§@ÀRºA¨ç¦¡®w 18. ±N C »P C++ µ{¦¡¤¬¬Û³sµ²®Éªºª`·N¨Æ¶µ 19. ª`·N³sµ²®Éªº symbol ½Ä¬ð 20. ¬°¦ó¦b»s§@ GNU/Linux ¦@¨É¨ç¦¡®wªº®ÉÔn¥H PIC ½sĶ 21. ¥H statifier ¬°°ÊºA³sµ²ªº°õ¦æÀɼÒÀÀÀRºA³sµ² Chapter 3 ¡@GNU Programming Hacks 22. GCC ªº GNU ÂX¥R¥\¯à¤Jªù 23. ¨Ï¥Î GCC ªº¦æ¤º²ÕĶ¥\¯à 24. ³z¹L GCC ¤º«Ø¨ç¦¡¬¡¥Î³Ì¨Î¤Æ 25. ¦b¤£¨Ï¥Î glibc ªº«e´£¤U¼g Hello World 26. ¨Ï¥Î TLS (thread local storage) 27. ¥H glibc ®Ú¾Ú¨t²ÎÃþ«¬¤Á´«n¸ü¤Jªº¨ç¦¡®w 28. ®Ú¾Ú³sµ²ªº¨ç¦¡®w§ïÅܵ{¦¡¹B§@ 29. ¨î¨ç¦¡®w¹ï¥~¤½¶}ªº symbols 30. ¬°¨ç¦¡®w¹ï¥~¤½¶}ªºsymbols ¥[¤Wª©¥»¥H±±¨î¹B§@ 31. ¦b main() ¤§«e©I¥s¨ç¦¡ 32. ¥H GCC ²£¥Íªºµ{¦¡½X¦b°õ¦æ®É²£¥Íµ{¦¡½X 33. ³\¥i©Î¸T¤î stack ¤Wªºµ{¦¡½X 34. °õ¦æ heap ¤Wªºµ{¦¡½X 35. «Ø¥ß PIE ( ¦ì¸m¿W¥ß°õ¦æ®æ¦¡) 36. ¥H C++ ¼g synchronized method 37. ¥H C++ ¼g singleton 38. ²z¸Ñ g++ ªº¨Ò¥~³B²z¾÷¨î (throw ½g) 39. ²z¸Ñ g++ ªº¨Ò¥~³B²z¾÷¨î (SjLj ½g) 40. ²z¸Ñ g++ ªº¨Ò¥~³B²z¾÷¨î (DWARF2 ½g) 41. ²z¸Ñ g++ ³B²z¨Ò¥~ªº¦¨¥» Chapter 4 ¡@Secure Programming Hacks 42. GCC ¦w¥þµ{¦¡³]p¤Jªù 43. ¥H -ftrapv °»´ú¾ã¼Æ¹Bºâ·¸¦ì 44. ¥H Mudflap °»´ú½w½Ä°Ï·¸¦ì 45. ¥H -D_FORTIFY_SOURCE °»´ú½w½Ä°Ï·¸¦ì 46. ¥H -fstack-protector «OÅ@ stack 47. ¥HµL¸¹¾ã¼Æ©w¸q bitmask ±`¼Æ 48. ª`·N¤Ó¤jªº shift ²¾¦ì 49. ª`·N 64-bit Àô¹Ò¤U 0 »P NULL ªº¤£¦P 50. POSIX ªº thread-safe ¨ç¦¡ 51. ¦p¦ó¼¶¼g¦w¥þªº signal handler 52. ¥H sigwait ¦P¨B³B²z²§¨B signal 53. ¥H sigsafe ¦w¥þ¦a³B²z signal 54. ¥H Valgrind °»´ú°O¾ÐÅ鬪º| 55. ¥H Valgrind °»´ú°O¾ÐÅé¾Þ§@¥¢»~ 56. ¥H Helgrind °»´ú multi-thread µ{¦¡ªº¯äÂÎ 57. ¥H fakeroot ¼ÒÀÀ root Åv°õ¦æµ{¦¡ Chapter 5 ¡@Runtime Hacks 58. µ{¦¡¦p¦ó°õ¦æ¨ì main() 59. ¨t²Î¨ç¦¡ªº©I¥s¹Lµ{ 60. ¥H LD_PRELOAD ©â´«¦@¨É¨ç¦¡®w 61. ¥H LD_PRELOAD ¥]¸Ë²{¦³¨ç¦¡ 62. ¥H dlopen ¦b°õ¦æ®É°ÊºA³sµ² 63. Åã¥Ü C ªº backtrace 64. Àˬd°õ¦æ¤¤ªº process ªº¸ô®| 65. Àˬd¥Ø«e¸ü¤Jªº¦@¨É¨ç¦¡®w 66. ´x´¤ process »P°ÊºA¨ç¦¡®w¬M®gªº°O¾ÐÅé 67. ¥H libbfd ¨ú±o symbol ¤@Äý 68. °õ¦æ®É±N C++ symbol ¶i¦æ demangle 69. ¥H ffcall °ÊºA¨M©w¨ç¦¡ signature ¶i¦æ©I¥s 70. ¥H libdwarf ¨ú±o debug ¸ê°T 71. ¥H dumper ±Nµ²ºc¤º®e¥H§ó®e©ö¬ÝÀ´ªº¤è¦¡Åã¥Ü 72. ¦Û¤O¸ü¤J object file 73. ¥H libunwind ±±¨î©I¥s¦ê¦C 74. ¥H GNU lightning ¥iÄâ¦a¦b°õ¦æ®É²£¥Íµ{¦¡½X 75. ¨ú±o stack ½d³òªº¦ì§} 76. ¥H sigaltstack ³B²z stack overflow ªºª¬ªp 77. ªþ±¾¦b¨ç¦¡ªº enter/exit 78. ±q signal handler §ï¼gµ{¦¡ªº°õ¦æÀô¹Ò 79. ¨ú±o program counter ªºÈ 80. §ï¼g¦Û¨µ{¦¡½X¥H§ïÅܵ{¦¡¦æ¬° 81. ¥H SIGSEGV Àˬd¦ì§}¬O§_¦³®Ä 82. ¥H strace °lÂܨt²Î©I¥s 83. ¥H ltrace °lÂܦ@¨É¨ç¦¡®w©I¥s 84. ¥H Jockey ¬ö¿ý¡B«²{ Linux µ{¦¡°õ¦æª¬ªp 85. ¥H prelink ¥[³tµ{¦¡±Ò°Ê 86. ¥H livepatch §ï¼g°õ¦æ¤¤ªº process Chapter 6 ¡@Pro_ler¡DDebugger Hacks 87. ¥H gprof ¶q´ú°õ¦æ®Ä¯à 88. ¥H sysprof »´ÃP¶q´ú¨t²Î®Ä¯à 89. ¥H oprofile ¸Ô²Ó¶q´ú¨t²Î®Ä¯à 90. ¥H GDB ¾Þ§@°õ¦æ¤¤ªº process 91. ¨Ï¥ÎµwÅ骺°£¿ù¥\¯à 92. ¦b C µ{¦¡¤¤³]©w¤¤Â_ÂI Chapter 7 ¡@¨ä¥L Hacks 93. Boehm GC ªº¾÷¨î 94. ª`·N process ªº memory ordering 95. ¥H Portable Coroutine Library (PCL) ¶i¦æ»´¶qªº¥¦æ³B²z 96. pºâ CPU ªº clock ¼Æ 97. ¯BÂI¼Æªº bit ªí¥Üªk 98. x86 ¾Ö¦³ªº¯BÂI¼Æ¹Bºâ«ü¥Oªº¯S®í¤§³B 99. ¹Bºâµ²ªGµ¥©óµL¤j©Î NaN ªº®ÉÔ¤Þµo signal 100. ¤åÄm¤¶²Ð ¯Á¤Þ
Code Revie
³Ì·spºâ¾÷·§½×(²Ä¤Q
NotebookLM
¤£À´µ{¦¡¤]¯à¦Û¬[±MÄÝ
¤@¾Ç´N·|ªº AI ¼v
Python×¥P¤§¸ô
³Ì·sLINE©x¤è±b¸¹
MCP¶}µo¥þ§ð²¤¡G¥´
Canva¹s°ò¦¤Jªù
¥\²v¥b¾ÉÅ餸¥ó
¬°¤F«O»Ù±zªºÅv¯q¡A·sµ·¸ôºô¸ô®Ñ©±©ÒÁʶRªº°Ó«~§¡¨É¦³¨ì³f¤C¤ÑªºÅ²½à´Á¡]§t¨Ò°²¤é¡^¡C°h¦^¤§°Ó«~¥²¶·©óŲ½à´Á¤º±H¦^¡]¥H¶lÂW©Î¦¬°õÁp¬°¾Ì¡^¡A¥B°Ó«~¥²¶·¬O¥þ·sª¬ºA»P§¹¾ã¥]¸Ë(°Ó«~¡Bªþ¥ó¡B¤º¥~¥]¸Ë¡BÀH³f¤å¥ó¡BÃØ«~µ¥)¡A§_«h®¤¤£±µ¨ü°h³f¡C