更新时间:2025-02-10 16:07:07
封面
版权信息
作者简介
译者序
前言
关于作者
关于技术撰稿人
关于技术编辑
第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{...}