欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • x86汇编与逆向工程(软件破解与防护的艺术)/网络空间安全技术丛书
      • 作者:(美)斯蒂芬妮·多马斯//克里斯托弗·多马斯|责编:刘锋//张秀华|译者:ChaMd5安全团队
      • 出版社:机械工业
      • ISBN:9787111767404
      • 出版日期:2025/01/01
      • 页数:237
    • 售价:39.6
  • 内容大纲

        本书以软件反汇编技术为中心,首先带领读者从x86的基础知识开始,学习如何读取、编写和构建赋能全球大量计算机的汇编语言;然后介绍如何使用IDA、Ghidra、Olly等业界最受欢迎的工具对应用程序进行逆向工程;接着介绍如何利用补丁和密钥生成等技术进行软件破解,所有这些都利用了汇编和逆向工程的知识;最后从防御的角度向读者介绍相关技术,使他们能够更好地保护自己的软件。本书将引领好奇的读者深入软件破解和计算机的核心,探索其运作机制。深入学习x86计算机的运行原理,不仅对逆向工程和软件破解来说至关重要,还能帮助读者在代码优化、效率提高、调试、编译器设置调整以及芯片选择等方面成为更出色的开发者。
  • 作者介绍

  • 目录

    译者序
    前言
    关于作者
    关于技术撰稿人
    关于技术编辑
    第1章  反编译和架构
      1.1  反编译
        1.1.1  反编译何时有用
        1.1.2  反编译JIT语言
        1.1.3  保护JIT语言
      1.2  实验:反编译
        1.2.1  技能
        1.2.2  要点
      1.3  架构
        1.3.1  计算机架构
        1.3.2  汇编
      1.4  总结
    第2章  x86汇编:数据、模式、寄存器和内存访问
      2.1  x86简介
      2.2  汇编语法
      2.3  数据表示
        2.3.1  数字系统的基数
        2.3.2  位、字节和字
        2.3.3  处理二进制数
      2.4  寄存器
        2.4.1  x86中的寄存器
        2.4.2  寄存器的使用
      2.5  内存访问
      2.6  寻址模式
        2.6.1  绝对寻址
        2.6.2  间接寻址
        2.6.3  基址加偏移量寻址
        2.6.4  索引寻址
        2.6.5  基址–索引寻址
      2.7  总结
    第3章  x86 汇编:指令
      3.1  x86指令格式
      3.2  x86指令
        3.2.1  mov
        3.2.2  inc、dec
        3.2.3  add、sub
        3.2.4  mul
        3.2.5  div
        3.2.6  and、or、xor
        3.2.7  not
        3.2.8  shr、shl
        3.2.9  sar、sal
        3.2.10  nop
        3.2.11  lea
      3.3  整合所有内容

      3.4  常见的x86指令错误
      3.5  总结
    第4章  构建和运行汇编程序
      4.1  输出
        4.1.1  控制引脚
        4.1.2  由操作系统处理与显卡的交互
      4.2  系统调用
        4.2.1  sys_write
        4.2.2  sys_exit
        4.2.3  输出字符串
      4.3  汇编和链接
        4.3.1  Linux中的汇编与链接
        4.3.2  编写汇编程序
      4.4  objdump
      4.5  实验:Hello World
        4.5.1  技能
        4.5.2  要点
      4.6  ASCII
        4.6.1  识别ASCII字符串
        4.6.2  ASCII操作技巧
      4.7  总结
    第5章  理解条件码
      5.1  条件码
        5.1.1  eflags
        5.1.2  影响状态标志的操作
      5.2  总结
    第6章  分析和调试汇编代码
      6.1  二进制分析
        6.1.1  静态分析与动态分析
        6.1.2  调试
      6.2  断点
        6.2.1  软件断点
        6.2.2  硬件断点
      6.3  gdb
      6.4  段错误
      6.5  实验:鲨鱼模拟器3000
        6.5.1  技能
        6.5.2  要点
      6.6  消除噪声
      6.7  总结
    第7章  函数和控制流
      7.1  控制流
        7.1.1  指令指针
        7.1.2  控制流指令
      7.2  x86中的逻辑结构
        7.2.1  if(...){...}
        7.2.2  if(...){...}else{...}
        7.2.3  do{...}while(...);
        7.2.4  while(...){...}
        7.2.5  for(...;...;...){...}

        7.2.6  switch(...){...}
        7.2.7  continue
        7.2.8  break
        7.2.9  &&
        7.2.10  ||
      7.3  栈
        7.3.1  栈是如何工作的
        7.3.2  x86栈
      7.4  函数调用与栈帧
        7.4.1  x86中的函数
        7.4.2  栈分析
        7.4.3  调用约定
        7.4.4  cdecl
        7.4.5  栈帧
        7.4.6  宏观程序
        7.4.7  需要记住的事情
      7.5  总结
    第8章  编译器和优化器
      8.1  寻找目标代码入口点
      8.2  编译器
        8.2.1  优化
        8.2.2  剥离
        8.2.3  链接
      8.3  总结
    第9章  逆向工程:工具和策略
      9.1  实验:RE Bingo
        9.1.1  技能
        9.1.2  要点
      9.2  基础侦察
        9.2.1  objdump
        9.2.2  ltrace和strace
        9.2.3  strings
        9.2.4  Dependency Walker
      9.3  逆向工程的策略
        9.3.1  寻找感兴趣的区域
        9.3.2  迭代注释代码
      9.4  总结
    第10章  破解:工具和策略
      10.1  密钥检查器
        10.1.1  不好的方法
        10.1.2  合理的方法
        10.1.3  更好的方法
        10.1.4  最佳方法
        10.1.5  其他的建议
      10.2  密钥生成器
        10.2.1  为什么要创建密钥生成器
        10.2.2  密钥生成的原理
        10.2.3  破解各种类型的密钥检查
        10.2.4  对抗密钥生成器
      10.3  实验:密钥生成器

        10.3.1  技能
        10.3.2  要点
      10.4  Procmon
        10.4.1  示例:Notepad.exe
        10.4.2  怎样用Procmon辅助逆向工程和破解
      10.5  Resource Hacker
        10.5.1  示例
        10.5.2  小实验:Windows计算器
      10.6  打补丁
        10.6.1  打补丁与密钥生成
        10.6.2  在哪里打补丁
        10.6.3  nop指令
      10.7  其他调试器
        10.7.1  OllyDbg
        10.7.2  Immunity
        10.7.3  x86dbg
        10.7.4  WinDbg
      10.8  使用Immunity调试工具进行调试
        10.8.1  Immunity:汇编代码
        10.8.2  Immunity:模块
        10.8.3  Immunity:字符串
        10.8.4  Immunity:运行程序
        10.8.5  Immunity:异常
        10.8.6  Immunity:重写程序
      10.9  实验:使用Immunity进行破解
        10.9.1  技能
        10.9.2  要点
      10.10  总结
    第11章  打补丁和高级工具
      11.1  在010编辑器中打补丁
      11.2  CodeFusion补丁
      11.3  Cheat Engine
        11.3.1  Cheat Engine:打开进程
        11.3.2  Cheat Engine:查看内存
        11.3.3  Cheat Engine:字符串引用
        11.3.4  Cheat Engine:重写程序
        11.3.5  Cheat Engine:复制字节
        11.3.6  Cheat Engine:获取地址
      11.4  实验:破解LaFarge
        11.4.1  技能
        11.4.2  要点
      11.5  IDA
        11.5.1  IDA:字符串
        11.5.2  IDA:基本块
        11.5.3  IDA:函数和变量
        11.5.4  IDA:注释
        11.5.5  IDA:路径
      11.6  IDA补丁
      11.7  实验:IDA逻辑流程
        11.7.1  技能

        11.7.2  要点
      11.8  Ghidra
      11.9  实验:使用IDA进行破解
        11.9.1  技能
        11.9.2  要点
      11.10  总结
    第12章  防御
      12.1  混淆技术
        12.1.1  评估混淆技术
        12.1.2  自动化混淆
        12.1.3  混淆器
        12.1.4  攻克混淆器
      12.2  实验:混淆技术
        12.2.1  技能
        12.2.2  要点
      12.3  反调试
        12.3.1  IsDebuggerPresent()
        12.3.2  调试寄存器
        12.3.3  读时间戳计数器
        12.3.4  无效CloseHandle()调用
        12.3.5  目录扫描
        12.3.6  攻击性反调试
        12.3.7  攻克反调试技术
      12.4  实验:反调试
        12.4.1  技能
        12.4.2  要点
      12.5  总结
    第13章  高级防御技术
      13.1  防篡改技术
        13.1.1  哈希
        13.1.2  签名
        13.1.3  水印
        13.1.4  软件守护
      13.2  加壳技术
        13.2.1  加壳器是如何工作的
        13.2.2  这是强大的保护机制吗
        13.2.3  破解加壳技术
        13.2.4  PEiD
      13.3  实验:检测和脱壳
        13.3.1  技能
        13.3.2  要点
      13.4  虚拟化技术
        13.4.1  代码虚拟化是如何工作的
        13.4.2  分层虚拟化
        13.4.3  虚拟化存在的问题
        13.4.4  这是强大的保护机制吗
        13.4.5  破解虚拟化技术
      13.5  加密器/解密器
        13.5.1  这种保护机制有用吗
        13.5.2  攻克加密器

      13.6  总结
    第14章  检测与预防
      14.1  循环冗余校验
      14.2  代码签名
        14.2.1  如何进行代码签名
        14.2.2  如何验证已签名的应用程序
        14.2.3  代码签名有效吗
        14.2.4  代码签名与循环冗余校验
        14.2.5  这是强大的保护机制吗
      14.3  RASP
        14.3.1  钩子函数
        14.3.2  RASP的风险
        14.3.3  这是强大的保护机制吗
      14.4  白名单
        14.4.1  如何运行白名单
        14.4.2  这是强大的保护机制吗
      14.5  黑名单
      14.6  远程认证
        14.6.1  远程认证示例
        14.6.2  这是强大的保护机制吗
      14.7  实验:进程监控
        14.7.1  技能
        14.7.2  要点
      14.8  总结
    第15章  法律
      15.1  影响逆向工程的美国法律
        15.1.1  《数字千年版权法》
        15.1.2  《计算机欺诈和滥用法案》
        15.1.3  《版权法》
        15.1.4  重要法庭判例
        15.1.5  合理使用
        15.1.6  DMCA研究免责
        15.1.7  合法性
      15.2  总结
    第16章  高级技术
      16.1  时间旅行调试
      16.2  二进制插桩
      16.3  中间表示
      16.4  反编译
      16.5  自动化结构恢复
      16.6  可视化
      16.7  去混淆
      16.8  定理证明器
      16.9  符号分析
      16.10  总结
    第17章  附加话题
      17.1  栈溢出
        17.1.1  shellcode
        17.1.2  栈溢出与栈保护
      17.2  关联C代码与x86汇编代码

        17.2.1  在x86代码中使用C函数
        17.2.2  在C代码中使用x86函数
        17.2.3  _start与main()
        17.2.4  标准参数
        17.2.5  混合使用C语言和汇编语言
      17.3  总结
    结语