译者序
前言
关于作者
关于技术撰稿人
关于技术编辑
第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 Eng
展开