代码反汇编:IDA Pro与Soft ICE之应用 目录

 边看边翻译,其中敲字错误或表述有误再所难免。如果您发现错误,而且也有时间,敬请留言告之,以便更正。 请尊重作者及译者工作之艰辛,若转摘,请务必注明出处如下:

------------------------------------------------------------------

《代码反汇编:IDA Pro与Soft ICE之应用》

英文名称:Disassembling Code IDA Pro and Soft ICE

作者:Vlad Pirogov

译者:罗祥勇 <E-mail:solo_lxy@126.com>


出自:CSDN Blog <背你走天涯>专栏


------------------------------------------------------------------

目录

第一章 反汇编入门... 15

1.1 计算机内存中的信息表示... 15

1.1.1 审视内存... 15

1.1.2 进制表示法... 16

十进制系统... 16

二进制系统... 17

十六制系... 19

1.1.3 计算机内存中的数字表示... 20

无符号的整数... 20

符号整数... 21

... 22

二进码Binary-Coded Decimals. 24

1.2 Intel Pentium理器的指令和寄存器... 24

1.2.1 Pentium微处理器的寄存器... 24

通用寄存器... 25

标志寄存器... 25

段寄存器... 26

控制寄存器... 26

系统地址寄存器... 27

调试寄存器... 28

1.2.2 主要指令集... 29

1.2.3 算术协处理器指令... 41

结构和操作... 41

特殊情况... 42

数据寄存器... 42

异常... 43

状态字... 43

控制字... 43

协处理器指令... 44

1.2.4 MMX指令... 50

MMX体系结构... 50

MMX新指令... 53

1.3 Windows系统编程的专有特征... 55

1.3.1 通用概念... 55

1.3.2 控制台应用程序... 56

1.3.3 窗口应用程序... 66

1.3.4 基于对话框的应用程序... 71

1.4 Intel微处理器的指令格式... 78

1.4.1 一般要考虑的事项... 78

1.4.2 指令代码... 79

1.4.3 MOD R/M字节域... 83

1.4.4 SIB字节域... 87

1.4.5 一个手工反汇编的简单例子... 89

1.4.6 反汇编的难处... 90

1.4.7 x87 FPU指令... 92

1.5 PE模块的结构... 93

1.5.1 一般方法... 93

1.5.2 PE文件头... 98

1.5.3 节表... 102

1.5.4 输入节... 105

1.5.5 输出节... 107

1.5.6 资源节... 108

层次结构中的第一层... 109

层次结构中的第二层... 110

层次结构中的第三层... 111

层次结构中的第四层... 111

1.5.7 关于调试信息... 111

符号表... 111

调试信息... 111

1.6 汇编语言程序的调试与反汇编... 112

1.6.1 代码反汇编的例子... 112

输入函数的查找... 112

认识可执行代码的困难... 116

隐秘跳转和跳转的隐秘性... 121

使用调试信息... 123

1.6.2 关于可执行代码的修改... 124

堆栈上代码的执行... 124

使用WriteProcessMemory函数... 129

使用VirtualProtectEx函数... 130

第二章 代码挖掘者的工具箱... 133

2.1 代码挖掘者工具箱概览... 133

2.1.1 反汇编器... 133

Dumpbin程序... 133

IDA Pro反汇编程序... 135

W32Dasm. 135

专用反汇编器... 135

2.1.2 调试器... 135

Turbo Debugger. 136

Windows的调试工具... 137

OllyDbg试器... 137

Soft ICE调试器... 137

2.1.3 十六进制编辑器... 138

WinHex程序... 138

黑客阅读器(HIEW)程序... 138

BIEW编辑器... 141

2.1.4 其他工具... 141

资源查看器... 141

资源监视器... 142

2.2 W32Dasm调试器和反汇编器... 142

2.2.1 入门... 142

程序外观和设置... 142

2.2.2 使用反汇编代码工作... 144

漫游反汇编代码... 144

数据显示... 144

打印输入/输出函数... 145

显示资源... 146

文本操作... 146

2.2.3 调试程序... 146

加载要调试的程序... 146

处理动态连接库... 147

设置断点... 147

代码、数据和寄存器的修改... 148

输出应用程序的编程接口信息... 148

搜索程序中的指定位置... 148

2.3 OllyDbg调试器... 149

2.3.1 入门... 149

调试窗口... 149

反汇编窗口... 150

数据窗口... 150

寄存器窗口... 151

堆栈窗口... 151

其他窗口相关操作... 151

调试执行... 151

2.3.2 断点... 152

原生断点... 152

条件断点... 152

带日志(Log)的条件断点... 152

Windows消息断点... 153

输入函数上的断点... 153

在内存区域上设置断点... 154

内存窗口上的断点... 154

硬件断点... 154

2.3.3 其他功能... 154

表达式监视窗口... 154

信息查找... 155

修改可执行模块... 155

2.4 可执行文件修改的例子... 155

2.4.1 例子1:消除烦人的消息对话框... 155

使用OllyDbg查找... 156

使用W32Dasm查找... 157

使用IDA Pro查找... 158

2.4.2 例子2:消除程序的使用限制... 158

延迟过程... 159

移除程序运行次数限制... 161

2.4.3 例子3:破解试用版本... 162

总则... 162

在调试器中查找... 163

2.4.4 例子4:去除保护... 163

步骤1:尝试注册程序... 164

步骤2:去除Nag窗口... 165

步骤3:完成注册... 167

步骤4:使用意想不到的解决方案... 168

第三章 可执行代码分析范例... 169

概览... 169

3.1 数据识别... 169

3.1.1 全局变量... 170

代码优化的影响... 170

对执行速度和代码大小进行优化... 170

评估执行时间... 172

指向全局变量的指针... 173

全局变量和常量... 174

变量的大小、位置和类型... 176

复杂数据类型... 180

字符串... 180

数组... 185

结构... 186

3.1.2 局部变量... 186

定义在堆栈中的变量... 186

临时变量... 186

寄存器变量... 186

3.2 程序结构的识别... 186

3.2.1 过程和函数... 186

参数传递... 186

附录... 188

附录1:用于研究PE文件头的程序... 188

附录2:资源... 198

文档... 198

书籍... 198

Internet资源... 199

附录3:光盘内容... 199

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值