Binary Hacks:黑客秘笈100选

Binary Hacks:黑客秘笈100选
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [日] , ,
2010-01
版次: 1
ISBN: 9787508387932
定价: 39.00
装帧: 平装
开本: 18开
纸张: 胶版纸
页数: 370页
字数: 379千字
正文语种: 简体中文
45人买过
  •   《BinaryHacks:黑客秘笈100选》的主题是关于底层程序的技术。说到底层,就是和“原始的”计算机很接近的意思。软件的世界是一个抽象化的积累,逐步演化到现在的阶段。抽象化就是隐藏底层的复杂部分,相比较来说是可以提高生产性、安全性的方法,并给开发者提供程序化的手段。但是,如果认为完全不依赖底层系统级的技术来进行编程,这是行不通的。追求性能上的最佳,尽可能提高可信赖性,想解决偶尔发生的“谜一样的错误”,在这些情况下,了解底层系统级的技术就显得尤为重要。遗憾的是,抽象化并不能代替所有的。
      《BinaryHacks:黑客秘笈100选》的目的就是在上述的情况下,都能使用的大量Know-how的介绍。《BinaryHacks:黑客秘笈100选》BinaryHack定义为“能驱动软件的底层技术的Know-how”,从最基本的工具使用开始,安全编程,OS到提高处理器的处理性能的技术,在一个很宽泛的范围内都进行了说明。 本书寄语
    编写说明
    前言
    第1章介绍
    1.BinaryHack入门
    2.BinaryHack用语的基础知识
    3.用File查询文件的类型
    4.用od转储二进制文件

    第2章目标文件Hack
    5.ELF入门
    6.静态链接库和共享库
    7.通过Idd查阅共享库的依赖关系
    8.用readelf表示ELF文件的信息
    9.用objdump来转储目标文件
    10.用objdump反汇编目标文件
    11.用Objcopy嵌入可执行文件的数据
    12.用am检索包含在目标文件里的符号
    13.用strings从二进制文件中提取字符串
    14.用c++filt对C++的符号进行转储
    15.用addr2line从地址中获取文件名和行号
    16.用strip删除目标文件中的符号
    17.用ar操作静态链接库
    18.在链接c程序和c++程序时要注意的问题
    19.注意链接时的标识符冲突
    20.建立GNU/Linux的共享库,为什么要用PIC编译?
    21.用statitier’对动态链接的可执行文件进行模拟静态链接

    第3章GNU编程Hack
    22.GCC的GNU扩展入门
    23.在GCC上使用内联汇编(inlineassembler)
    24.活用在GCC的builtin函数上的最优化
    25.不使用glibc写HelloWorld
    26.使用TLS(Thread-LocalStorage)
    27.根据系统不同用glibc来更换加载库
    28.由链接后的库来变换程序的运行
    29.控制对外公开库的符号
    30.在对外公开库的符号上利用版本来控制动作
    31.在main()的前面调用函数
    32.GCC根据生成的代码来生成运行时的代码
    33.允许,禁止运行放置在stack里的代码
    34.运行放置在heap上的代码
    35.建成PIE(位置独立运行形式)
    36.用C++书写同步方法(synchronizedmethod)
    37.用C++生成singleton
    38.理解g++的异常处理(tllrow篇)
    39.理解g++的异常处理(sjLj篇)
    40.理解g++的异常处理(DWARF2篇)
    41.理解g++异常处理的成本

    第4章安全编程Htick
    42.GCC安全编写入门
    43.用-ftrapv检测整数溢出
    44.用Mudflap检测出缓冲区溢出
    45.用-D_FORTIFY_SOURCE检测缓冲区溢出
    46.用-fstack-protector保护堆栈
    47.将进行位遮蔽的常量无符号化
    48.注意避免移位过大
    49.注意64位环境中0和NULL的不同之处
    50.POSIX的线程安全函数
    51.安全编写信号处理的方法
    52.用sigwait将异步信号进行同步处理
    53.用sigsafe将信号处理安全化
    54.用Valgrind检测出内存泄漏
    55.使用Valgrind检测出错误的内存访问
    56.用Helgrind检测出多线程程序的bug
    57.用fakeroot在相似的root权限中运行进程

    第5章运行时HaCk
    58.程序转变成main()
    59.怎样调用系统调用
    60.用LD_PRELOAD更换共享库
    61.用LD_PRELOAD来lap既存的函数
    62.用dlopen进行运行时的动态链接
    63.用C表示回溯
    64.检测运行中进程的路径名
    65.检测正在加载的共享库
    66.掌握process和动态库mapmemory
    67.用libbfd取得符号的一览表
    68.运行C++语言时进行demangle
    69.用ffcall动态决定签名,读出函数
    70.用libdwarf取得调试信息
    71.通过dumper简化dump结构体的数据
    72.自行加载目标文件
    73.通过libunwind控制callchain
    74.用GNulightningPortable生成运行编码
    75.获得stack的地址
    76.用sigaltstack处理stackoverflow
    77.hook面向函数的enter/exit
    78.从signalhandler中改写程序的context
    79.取得程序计数器的值
    80.通过自动改写来改变程序的操作
    81.使用SIGSEGV来确认地址的有效性
    82.用strace来跟踪系统调用
    83.用ltrace来跟踪进程调用共享库的函数
    84.用Jockey来记录、再生Linux的程序运行
    85.用prelink将程序启动高速化
    86.通过livepatch在运行中的进程上发布补丁

    第6章profile调试器Hack
    87.使用gprof检索profile
    88.使用sysprof搜索系统profile
    89.使用oprofile获取详细的系统profile
    90.使用GDB操作运行进程
    91.使用硬件调试的功能
    92.c程序中breakpoint的设定可以用断点这个说法

    第7章其他的Hack
    93.BoehmGC的结构
    94.请注意处理器的存储器顺序
    95.对PortableCoroutineLibrary(PCL)进行轻量的并行处理
    96.计算CPU的clock数
    97.浮点数的bit列表现
    98.x86的浮点数运算命令的特殊性
    99.用结果无限大和NaN化运算来生成信号
    100.文献介绍
  • 内容简介:
      《BinaryHacks:黑客秘笈100选》的主题是关于底层程序的技术。说到底层,就是和“原始的”计算机很接近的意思。软件的世界是一个抽象化的积累,逐步演化到现在的阶段。抽象化就是隐藏底层的复杂部分,相比较来说是可以提高生产性、安全性的方法,并给开发者提供程序化的手段。但是,如果认为完全不依赖底层系统级的技术来进行编程,这是行不通的。追求性能上的最佳,尽可能提高可信赖性,想解决偶尔发生的“谜一样的错误”,在这些情况下,了解底层系统级的技术就显得尤为重要。遗憾的是,抽象化并不能代替所有的。
      《BinaryHacks:黑客秘笈100选》的目的就是在上述的情况下,都能使用的大量Know-how的介绍。《BinaryHacks:黑客秘笈100选》BinaryHack定义为“能驱动软件的底层技术的Know-how”,从最基本的工具使用开始,安全编程,OS到提高处理器的处理性能的技术,在一个很宽泛的范围内都进行了说明。
  • 目录:
    本书寄语
    编写说明
    前言
    第1章介绍
    1.BinaryHack入门
    2.BinaryHack用语的基础知识
    3.用File查询文件的类型
    4.用od转储二进制文件

    第2章目标文件Hack
    5.ELF入门
    6.静态链接库和共享库
    7.通过Idd查阅共享库的依赖关系
    8.用readelf表示ELF文件的信息
    9.用objdump来转储目标文件
    10.用objdump反汇编目标文件
    11.用Objcopy嵌入可执行文件的数据
    12.用am检索包含在目标文件里的符号
    13.用strings从二进制文件中提取字符串
    14.用c++filt对C++的符号进行转储
    15.用addr2line从地址中获取文件名和行号
    16.用strip删除目标文件中的符号
    17.用ar操作静态链接库
    18.在链接c程序和c++程序时要注意的问题
    19.注意链接时的标识符冲突
    20.建立GNU/Linux的共享库,为什么要用PIC编译?
    21.用statitier’对动态链接的可执行文件进行模拟静态链接

    第3章GNU编程Hack
    22.GCC的GNU扩展入门
    23.在GCC上使用内联汇编(inlineassembler)
    24.活用在GCC的builtin函数上的最优化
    25.不使用glibc写HelloWorld
    26.使用TLS(Thread-LocalStorage)
    27.根据系统不同用glibc来更换加载库
    28.由链接后的库来变换程序的运行
    29.控制对外公开库的符号
    30.在对外公开库的符号上利用版本来控制动作
    31.在main()的前面调用函数
    32.GCC根据生成的代码来生成运行时的代码
    33.允许,禁止运行放置在stack里的代码
    34.运行放置在heap上的代码
    35.建成PIE(位置独立运行形式)
    36.用C++书写同步方法(synchronizedmethod)
    37.用C++生成singleton
    38.理解g++的异常处理(tllrow篇)
    39.理解g++的异常处理(sjLj篇)
    40.理解g++的异常处理(DWARF2篇)
    41.理解g++异常处理的成本

    第4章安全编程Htick
    42.GCC安全编写入门
    43.用-ftrapv检测整数溢出
    44.用Mudflap检测出缓冲区溢出
    45.用-D_FORTIFY_SOURCE检测缓冲区溢出
    46.用-fstack-protector保护堆栈
    47.将进行位遮蔽的常量无符号化
    48.注意避免移位过大
    49.注意64位环境中0和NULL的不同之处
    50.POSIX的线程安全函数
    51.安全编写信号处理的方法
    52.用sigwait将异步信号进行同步处理
    53.用sigsafe将信号处理安全化
    54.用Valgrind检测出内存泄漏
    55.使用Valgrind检测出错误的内存访问
    56.用Helgrind检测出多线程程序的bug
    57.用fakeroot在相似的root权限中运行进程

    第5章运行时HaCk
    58.程序转变成main()
    59.怎样调用系统调用
    60.用LD_PRELOAD更换共享库
    61.用LD_PRELOAD来lap既存的函数
    62.用dlopen进行运行时的动态链接
    63.用C表示回溯
    64.检测运行中进程的路径名
    65.检测正在加载的共享库
    66.掌握process和动态库mapmemory
    67.用libbfd取得符号的一览表
    68.运行C++语言时进行demangle
    69.用ffcall动态决定签名,读出函数
    70.用libdwarf取得调试信息
    71.通过dumper简化dump结构体的数据
    72.自行加载目标文件
    73.通过libunwind控制callchain
    74.用GNulightningPortable生成运行编码
    75.获得stack的地址
    76.用sigaltstack处理stackoverflow
    77.hook面向函数的enter/exit
    78.从signalhandler中改写程序的context
    79.取得程序计数器的值
    80.通过自动改写来改变程序的操作
    81.使用SIGSEGV来确认地址的有效性
    82.用strace来跟踪系统调用
    83.用ltrace来跟踪进程调用共享库的函数
    84.用Jockey来记录、再生Linux的程序运行
    85.用prelink将程序启动高速化
    86.通过livepatch在运行中的进程上发布补丁

    第6章profile调试器Hack
    87.使用gprof检索profile
    88.使用sysprof搜索系统profile
    89.使用oprofile获取详细的系统profile
    90.使用GDB操作运行进程
    91.使用硬件调试的功能
    92.c程序中breakpoint的设定可以用断点这个说法

    第7章其他的Hack
    93.BoehmGC的结构
    94.请注意处理器的存储器顺序
    95.对PortableCoroutineLibrary(PCL)进行轻量的并行处理
    96.计算CPU的clock数
    97.浮点数的bit列表现
    98.x86的浮点数运算命令的特殊性
    99.用结果无限大和NaN化运算来生成信号
    100.文献介绍
查看详情
您可能感兴趣 / 更多
Binary Hacks:黑客秘笈100选
寻羊冒险记
[日]村上春树
Binary Hacks:黑客秘笈100选
听风的歌
[日]村上春树
Binary Hacks:黑客秘笈100选
绫辻行人的馆
[日]绫辻行人 著
Binary Hacks:黑客秘笈100选
卡皮巴拉不烦恼:如何像水豚一样远离内耗
[日]草薙龙瞬 著;许天小 译;时代华语 出品
Binary Hacks:黑客秘笈100选
轨迹queue: Kii Kanna作品集(赠PVC卡×1,明信片×4,拍立得风小卡×2)硬壳精装
[日]Kii Kanna 著;加缪的猫 译;天闻角川 出品
Binary Hacks:黑客秘笈100选
明清与李朝时代
[日]岸本美绪 后浪
Binary Hacks:黑客秘笈100选
泡泡先生
[日]吉田隆大 文图
Binary Hacks:黑客秘笈100选
枕头仙人:全二册
[日]加岳井广/著 王志庚 译
Binary Hacks:黑客秘笈100选
汗青堂丛书048·科举史(新)
[日]宫崎市定 后浪
Binary Hacks:黑客秘笈100选
人体极限:了解你的健康限度
[日]山崎昌广
Binary Hacks:黑客秘笈100选
神奇牙膏(宫西达也图画书)激发神奇想象力,让孩子爱上刷牙
[日]宫西达也 著;彭懿 译
Binary Hacks:黑客秘笈100选
恶意心理学
[日]冈本真一郎