你的位置:学习网 - 视频教程 >> 电脑 >> 网络应用 >> 网络安全 >> 详细内容

《加密与解密 PDF+光盘镜像+附带电子档完整版》




收藏本资料

本资料所属分类:

电脑 网络应用 网络安全

更新时间:2012年11月21日

如不能下载,请查看怎样下载


下面是学习资料下载列表,您可以点击这些文件名进行下载,如果不能下载,请查看下载帮助
[加密与解密(第三版)].段钢.扫描版.pdf 45.34MB
[加密与解密(第三版)].段钢.光盘镜像.rar 83.54MB
[加密与解密(第三版)].段钢.额外电子文档.rar 2.57MB

中文名: 加密与解密(第三版) PDF+光盘镜像+附带电子档完整版
作者: 段钢
图书分类: 软件
版本: PDF+光盘镜像+额外电子文档完整版
出版社: 电子工业出版社
书号: 9787121066443
发行时间: 2008年7日
地区: 大陆
语言: 简体中文
简介:
《加密与解密(第三版) PDF+光盘镜像+附带电子档完整版》PDF+光盘镜像+额外电子文档完整版
内容简介

本书以加密与解密为切入点,讲述了软件安全领域许多基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。读者在掌握本书的内容,很容易在漏洞分析、安全编程、病毒分析、软件保护等领域扩展,这些知识点都是相互的,彼此联系。国内高校对软件安全这块领域教育重视程度还不够,许多方面还是空白,而近年来许多企业对软件安全技术人才需求量越来越大。从就业角度来说,掌握这方面技术,可以提高自身的竞争能力;从个人成长角度来说,研究软件安全技术有助于掌握一些系统底层知识,是提升职业技能的重要途径。作为一名合格的程序员,除了掌握需求分析、设计模式等外,如能掌握一些系统底层知识,熟悉整个系统的底层结构,对自己的工作必将获益良多。

本书可以作为学校或培训机构的软件安全辅助教材,是安全技术爱好者、调试人员、程序开发人员不可多得的一本好书。

内容截图

《加密与解密(第三版) PDF+光盘镜像+附带电子档完整版》PDF+光盘镜像+额外电子文档完整版 



目录:

前言
第1篇 基础篇
第1章 基础知识
1.1 文本字符
1.1.1 字节存储顺序
1.1.2 ASCII与Unicode字符集
1.2 WINDOWS 操作系统
1.2.1 Win API简介
1.2.2 常用Win32 API函数
1.2.3 什么是句柄
1.2.4 Windows 9x与Unicode
1.2.5 Windows NT/2000/XP与Unicode
1.2.6 Windows 消息机制
1.3 保护模式简介
1.3.1 虚拟内存
1.3.2 保护模式的权限级别
1.4 认识PE格式
第2篇 调试篇
第2章 动态分析技术 33
2.1 OLLYDBG调试器
2.1.1 OllyDbg界面
2.1.2 OllyDbg的配置
2.1.3 加载程序
2.1.4 基本操作
2.1.5 断点
2.1.6 插件
2.1.7 Run trace
2.1.8 Hit trace
2.1.9 符号调试技术
2.1.10 OllyDbg常见问题
2.2 SOFTICE调试器
第3章 静态分析技术 31
3.1 文件类型分析
3.1.1 PEiD工具
3.1.2 FileInfo工具
3.2 静态反汇编
3.2.1 打开文件
3.2.2 IDA的配置
3.2.3 IDA主窗口界面
3.2.6 交叉参考
3.2.7 参考重命名
3.2.8 标签的用法
3.2.9 进制的转换
3.2.10 代码和数据转换
3.2.11 字符串
3.2.12 数组
3.2.13 结构体
3.2.14 枚举类型
3.2.15 堆栈变量
3.2.16 IDC脚本
3.2.17 FLIRT
3.2.18 插件
3.2.19 其他功能
3.2.20 小结
3.3 可执行文件的修改
3.4 静态分析技术应用实例
3.4.1 解密初步
3.4.2 逆向工程初步
第4章 逆向分析技术 35
4.1 启动函数
4.2 函数
4.2.1 函数的识别
4.2.2 函数的参数
4.2.3 函数的返回值
4.3 数据结构
4.3.1 局部变量
4.3.2 全局变量
4.3.3 数组
4.4 虚函数
4.5 控制语句
4.5.1 IF-THEN-ELSE语句
4.5.2 SWITCH-CASE语句
4.5.3 转移指令机器码的计算
4.5.4 条件设置指令
4.5.5 纯算法实现逻辑判断
4.6 循环语句
4.7 数学运算符
4.7.1 整数的加法和减法
4.7.2 整数的乘法
4.7.3 整数的除法
4.8 文本字符串
4.8.1 字符串存储格式
4.8.2 字符寻址指令
4.8.3 字母大小写转换
4.8.4 计算字符串的长度
4.9 指令修改技巧
第3篇 解密篇
第5章 常见的演示版保护技术 34
5.1 序列号保护方式
5.1.1 序列号保护机制
5.1.2 如何攻击序列号保护
5.1.3 字符串比较形式
5.1.4 注册机制作
5.2 警告(NAG)窗口
5.3 时间限制
5.3.1 计时器
5.3.2 时间限制
5.3.3 拆解时间限制保护
5.4 菜单功能限制
5.4.1 相关函数
5.4.2 拆解菜单限制保护
5.5 KEYFILE保护
5.5.1 相关API函数
5.5.2 拆解KeyFile保护
5.6 网络验证
5.6.1 相关函数
5.6.2 网络验证破解一般思路
5.7 CD-CHECK
5.7.1 相关函数
5.7.2 拆解光盘保护
5.8 只运行一个实例
5.8.1 实现方案
5.8.2 实例
5.9 常用断点设置技巧
第6章 加密算法
6.1 单向散列算法
6.1.1 MD5算法
6.1.2 SHA算法
6.1.3 小结
6.2 对称加密算法
6.2.1 RC4流密码
6.2.2 TEA算法
6.2.3 IDEA算法
6.2.4 BlowFish算法
6.2.5 AES算法
6.2.6 对称加密算法小结
6.3 公开密钥加密算法
6.3.1 RSA算法
6.3.2 ElGamal公钥算法
6.3.3 DSA数字签名算法
6.3.4 椭圆曲线密码编码学
6.4 其他算法
6.4.1 CRC32算法
6.4.2 Base64
6.5 常见加密库接口及其识别
6.5.1 Miracl大数运算库
6.5.2 FGInt
6.5.4 其它加密算法库介绍
第4篇 语言和平台篇
第7章 DELPHI程序
7.1 认识DELPHI
7.2 DEDE反编译器
7.3 按钮事件代码
7.4 模块初始化与结束化
第8章 VISUAL BASIC程序
8.1 基础知识
8.1.1 字符编码方式
8.1.2 编译模式
8.2 自然编译(NATIVE)
8.2.1 相关VB函数
8.2.2 VB程序比较方式
8.3 伪编译(PCODE)(cyclotron编写)
8.3.1 虚拟机与伪代码
8.3.2 动态分析VB P-code程序
8.3.3 伪代码的综合分析
8.3.4 VB P-code攻击实战
第9章 .NET平台加解密(tankaiha 编写) 51
9.1 .NET概述
9.1.1 什么是.Net
9.1.2 几个基本概念
9.1.3 第一个.Net程序
9.2 MSIL与元数据
9.2.1 PE结构的扩展
9.2.2 .Net下的汇编MSIL
9.2.3 MSIL与元数据的结合
9.3 代码分析技术
9.3.1 静态分析
9.3.2 动态调试
9.3.3 代码修改
9.4 代码保护技术及其逆向
9.4.1 强名称
9.4.2 名称混淆
9.4.3 流程混淆
9.4.4 压缩
9.4.5 加密
9.4.6 其它保护手段
9.5 深入.NET
9.5.1 反射与CodeDOM
9.5.2 Unmaganed API
9.5.3 Rotor、MONO与.Net内核
第5篇 系统篇
第10章 PE文件格式 54
10.1 PE的基本概念
10.1.1 基地址
10.1.2 相对虚拟地址
10.1.3 文件偏移地址
10.2 MS-DOS头部
10.3 PE文件头
10.3.1 Signature字段
10.3.2 IMAGE_FILE_HEADER 结构
10.3.3 Optional Header
10.4 区块
10.4.1 区块表
10.4.2 各种区块的描述
10.4.3 区块的对齐值
10.4.4 文件偏移与虚拟地址转换
10.5 输入表
10.5.1 输入函数的调用
10.5.2 输入表结构
10.5.3 输入地址表
10.5.4 输入表实例分析
10.6 绑定输入
10.7 输出表
10.7.1 输出表结构
10.7.2 输出表结构实例分析
10.8 基址重定位
10.8.1 基址重定位概念
10.8.2 基址重定位结构定义
10.8.3 基址重定位结构实例分析
10.9 资源
10.9.1 资源结构
10.9.2 资源结构实例分析
10.9.3 资源编辑工具
10.10 TLS初始化
10.11 调试目录
10.12 延迟装入数据
10.13 程序异常数据
10.14 .NET头部
10.15 PE分析工具编写
10.15.1 文件格式检查
10.15.2 FileHeader和OptionalHeader内容的读取
10.15.3 得到数据目录表信息
10.15.4 得到区块表信息
10.15.5 得到输出表信息
10.15.6 得到输入表信息
第11章 结构化异常处理 11
11.1 基本概念
11.1.1 异常列表
11.1.2 异常处理的基本过程
11.1.3 SEH的分类
11.2 SEH相关数据结构
11.2.1 TEB结构
11.2.2 EXCEPTION_REGISTRATION结构
11.2.3 EXCEPTION_POINTERS、EXCEPTION_RECORD、CONTEXT
11.3 异常处理回调函数
第6篇 脱壳篇
第12章 专用加密软件 11
12.1 认识壳
12.1.1 壳的概念
12.1.2 压缩引擎
12.2 压缩壳
12.2.1 UPX
12.2.2 ASPacK
12.3 加密壳
12.3.1 ASProtect
12.3.2 Armadillo
12.3.3 EXECryptor
12.3.4 Themida
12.4 虚拟机保护软件
12.4.1 虚拟机介绍
12.4.2 VMProtect简介
第13章 脱壳技术64
13.1 基础知识
13.1.1 壳的加载过程
13.1.2 脱壳机
13.1.3 手动脱壳
13.2 寻找OEP
13.2.1 根据跨段指令寻找OEP
13.2.2 用内存访问断点找OEP
13.2.3 根据堆栈平衡原理找OEP
13.2.4 根据编译语言特点找OEP
13.3 抓取内存映像
13.3.1 Dump原理
13.3.2 反DUMP技术
13.4 重建输入表
13.4.1 输入表重建的原理
13.4.2 确定IAT的地址和大小
13.4.3 根据IAT重建输入表
13.4.4 ImportREC重建输入表
13.4.5 输入表加密概括
13.5 DLL文件脱壳
13.5.1 寻找OEP
13.5.2 Dump映像文件
13.5.3 重建DLL的输入表
13.5.4 构造重定位表
13.6 附加数据
13.7 PE文件的优化
13.8 压缩壳
13.8.1 UPX外壳
13.8.2 ASPack外壳
13.9 静态脱壳
13.9.1 外壳Loader的分析
13.9.2 编写静态脱壳器
13.10 加密壳
13.10.1 ASProtect
13.10.2 Thmedia的SDK分析
第7篇 保护篇
第14章 软件保护技术 26
14.1 防范算法求逆
14.1.1 基本概念
14.1.2 堡垒战术
14.1.3 游击战术
14.2 抵御静态分析
14.2.1 花指令
14.2.2 SMC技术实现
14.2.3 信息隐藏
14.2.4 简单多态变形技术
14.3 文件完整性检验
14.3.1 磁盘文件校验实现
14.3.2 校验和(Checksum)
14.3.3 内存映像校验
14.4 代码与数据结合技术
14.4.1 准备工作
14.4.2 加密算法选用
14.4.3 手动加密代码
14.4.4 使.text区块可写
14.5 软件保护的若干忠告
第15章 反跟踪技术(forgot编写) 52
15.1 由BEINGDEBUGGED引发的蝴蝶效应
15.1.1 BeingDebugged
15.1.2 NtGlobalFlag
15.1.3 Heap Magic
15.1.4 从源头消灭BeingDebugged
15.2 回归NATIVE:用户态的梦魇
15.2.1 CheckRemoteDebuggerPresent
15.2.2 ProcessDebugPort
15.2.3 ThreadHideFromDebugger
15.2.4 Debug Object
15.2.5 SystemKernelDebuggerInformation
15.2.6 Native API
15.2.7 Hook和AntiHook
15.3 真正的奥秘:小技巧一览
15.3.1 SoftICE检测方法
15.3.2 OllyDbg检测方法
15.3.3 调试器漏洞
15.3.4 防止调试器附加
15.3.5 父进程检测
15.3.6 时间差
15.3.7 通过Trap Flag检测
15.3.8 双进程保护
第16章 外壳编写基础(Hying编写)35
16.1 外壳的结构
16.2 加壳主程序
16.2.1 判断文件是否为PE格式
16.2.2 文件基本数据读入
16.2.3 附加数据读取
16.2.4 输入表处理
16.2.5 重定位表处理
16.2.6 文件的压缩
16.2.7 资源数据处理
16.2.8 区块的融合
16.3 外壳部分编写
16.3.1 外壳的加载过程
16.3.2 自建输入表
16.3.4 外壳引导段
16.3.5 外壳第二段
16.4 将外壳部分添加至原程序
第17章 虚拟机的设计
17.1 原理
17.1.1 反汇编引擎
17.1.2 指令分类
17.2 启动框架和调用约定
17.2.1 调度器VStartVM
17.2.2 虚拟环境:VMContext
17.2.3 平衡堆栈:VBegin和VCheckEsp
17.3 HANDLER的设计
17.3.1 辅助Handler
17.3.2 普通Handler和指令拆解
17.3.3 标志位问题
17.3.4 相同作用的指令
17.3.5 转移指令
17.3.6 转移跳转指令的另一种实现
17.3.7 CALL指令
17.3.8 retn指令
17.3.9 不可模拟指令
17.4 托管代码的异常处理
17.4.1 VC++的异常处理
17.4.2 Delphi的异常处理
17.5 小结
第8篇 PEDIY篇
第18章 补丁技术
18.1 文件补丁
18.2 内存补丁
18.2.1 跨进程内存存取机制
18.2.2 Debug API机制
18.2.3 利用调试寄存器机制
18.2.4 DLL劫持技术
18.3 SMC补丁技术
18.3.1 单层SMC补丁技术
18.3.2 多层SMC补丁技术
18.4 补丁工具
第19章 代码的二次开发
19.1 数据对齐
19.2 增加空间
19.2.1 区块间隙
19.2.2 手工构造区块
19.2.3 工具辅助构造区块
19.3 获得函数的调用
19.3.1 增加输入函数
19.3.2 显式链接调用DLL
19.4 代码的重定位
19.4.1 修复重定位表
19.4.2 代码的自定位技术
19.5 增加输出函数
19.6 消息循环
19.6.1 WndProc函数
19.6.2 寻找消息循环
19.6.3 WndProc汇编形式
19.7 修改WNDPROC扩充功能
19.7.1 扩充WndProc
19.7.2 扩充Exit菜单功能
19.7.3 扩充Open菜单功能
19.8 增加接口
19.8.1 用DLL增加功能
19.8.2 扩展消息循环
附录
附录A 浮点指令
附录B 在Visual C++中使用内联汇编
术语表
参考文献

勘误表

Lm 表示第m 行,L-n 表示倒数第n 行 ,Dn 表示第n次印刷(D1表示2008年7月第一次印刷,D2表示2008年7月第二次印刷)

PⅤ L-10 D1/D2
反馈者:shoooo
原文:看雪资深版主。看雪论坛ID为linhansh
更正:看雪资深版主。看雪论坛ID为linhanshi

PⅤ L9 D1
反馈者: ddstrg
原文: 我并不是读书感兴趣
更正: 我并不是读书不感兴趣

Ⅹ L-20 D1/D2
反馈者:家有睡神
原文:调试SHE
更正:调试SEH

PⅪ L12 D1/D2
反馈者:shoooo
原文:北极星2003、笨雄、rackabcer、nbragon、inhanshi
更正:北极星2003、笨笨雄、crackabcer、cnbragon、linhanshi

PⅣ L-17 D1/D2
反馈者:shoooo
原文:13.9.2 Themidia的SDK分析
更正:13.9.2 Themida的SDK分析

PⅪ L12 D1/D2
反馈者:shoooo
原文:感谢linhansh在工具方面提供的帮助!
更正:感谢linhanshi在工具方面提供的帮助!

PⅪ L6 D1/D2
反馈者:shoooo
原文:特别感谢盛大网络发展有限公司徐海侠
更正:特别感谢盛大网络发展有限公司徐海峡


P5 L-1 D1/D2
反馈者:清风
原文:用此,函数设置
更正:用此函数设置

P4 L18 D1/D2/D3/D4
原文: 现在称做 Win32
更正: 现在称作 Win32


P5 L-12 D1/D2
反馈者:senhuxi
原文:hmemcpy函数的注释排版有问题
更正:三行注释均下移一行

P5 L-1,L-2 D1/D2
反馈者:kmlch
原文:Memcpy
更正:memcpy

P11 L9 D1/D2
反馈者:未秋叶已落
原文:和这个程序执行不无关的东西
更正:和这个程序执行无关的东西

P21 L-9 D1/D2
反馈者:kmlch
原文: 模块加载/卸载、线程创建结束等事件的处理
更正: 模块加载/卸载、线程创建/结束等事件的处理

P22 L12 D1/D2
反馈者:kmlch
原文: 遇到CALL跳过,不跟进
更正: 遇到CALL路过,不跟进
说明: 文中下面多次用到路过,还要用步过的,建议统一表述为其中的三个中的一个。

P22 L13 D1/D2
反馈者:usufu
原文:直到出现RET指定时中断(表2-1)
更正:直到出现RET指令时中断

P23 L2,D1
反馈者:yangjt
原文:会返回到4013FA这句
更正:会返回到4013FF这句

P27 L7,D1
反馈者:yangjt
原文:单击一次ZF的值取反
更正:双击一次ZF的值取反

P32 L1 D1/D2
反馈者:senhuxi
原文:其中的一个设置为44013AA
更正:其中的一个设置为4013AA

P36 L-11,L-8 D1/D2
反馈者:青枫
原文:40147C
更正:401476
(附图2.36光条应该停在401476这行)

P37 L2,D1
反馈者:yangjt
原文:弹出时从堆栈窗口中看到的
更正:中断时从堆栈窗口中看到的

P37 L6,D1
反馈者:yangjt
原文:要得到第一个参数的值
更正:要得到第一个参数的内存地址

P43 L-17,D2
反馈者:XLSDG
原文:OllDbg出会现假死现像
更正:OllDbg会出现假死现象

P44 L4,D1
反馈者:yangjt
原文:这类语言的编译后程序
更正:这类语言编译后的程序

P45 L-2 D1
反馈者:hdy981
原文:intel
更正:Intel

P46 L3 D1/D2
反馈者:hdy981
原文:OllyDdg
更正:OllyDbg

P50 L1 D1
反馈者:senhuxi
原文:WindProc
更正:图3.10 内容为"WindProc",而相对应的图3.11却为"WindClass"

P60 L-1 D1
反馈者:嗜血狂君
原文:功能就是将40011AB到4011C3之间的
更正:功能就是将401060到401074之间的

P62 L15 D1/D2
反馈者:青枫
原文:在DA\SIG目录中
更正:在IDA\SIG目录中


P78 L-8 D1/D2
反馈者:pathletboy
原文:pascal程序实体不合适。
更正:(更正暂时留着,修正的代码以后放出)


P79 L9 D1/D2/D3/D4
反馈者:AsmDebuger
原文:mov eax, [ebp-4] ; 将局部变量指针返回到eax
更正:mov eax, [ebp-4] ; 将局部变量返回到eax


P80 L4,D1
反馈者:yangjt
原文:将参数b的值
更正:将参数a的值

P81 L13 D1
反馈者:Gruuuuubby
原文:0040101B puash ecx
更正:0040101B push ecx

P83 L5,D1
反馈者:yangjt
原文:基址加上某变量
更正:基址加变址寻址


P99 L14 D1/D2/D3/D4
反馈者:jerrysun
原文:
inc cx
Loop B20
更正:
inc bx
Loop B20


P106 L18 D1/D2
反馈者:Xacs
原文:进入子程序(keymakep设置第一次中断地址)
更正:进入子程序(keymake里设置第一次中断地址)

P107 L-23 D1/D2/D3/D4
反馈者:keagan
原文:将 序列号 1212
更正:将 序列号 1234

P113 L9 D1/D2
反馈者:littlewisp
原文:1.使用SetTime()函数
更正:1.使用SetTimer()函数

P115 L7 D1/D2
反馈者:senhuxi
原文:来到地址4010C6,输入修改指令"jmp 4010C6"
更正:来到地址4010C6,输入修改指令"jmp 4010D6"


P135 L1 D1/D2
反馈者:kan
原文:“push ecx,ecx”中即为
更正:“push ecx”,ecx中即为

P136 L16 D1/D2
反馈者:lizaixue
原文:其设计时基于和MD4相同的原理
更正:其设计是基于和MD4相同的原理


P202 L-11 D1/D2/D3/D4
反馈者:keagan
原文:correct=pediy
更正:correct="pediy"

P264 L-14 D1
反馈者:usufu
原文:在32位Windows系统中,以为不存在共享地址空间,所以已用程序无需加以区别。
更正:在32位Windows系统中,已经不存在共享地址空间,所以已用程序无需加以区别。

P266 L-3 D1
反馈者:junxiong
原文:MAGE_NT_SIGNATURE
更正:IMAGE_NT_SIGNATURE


P266 L-20 D1/D2/D3/D4
反馈者:keagan
原文:图10.3 查看PE文件 MD-DOS 头部
更正:图10.3 查看PE文件 MS-DOS 头部

P268 L3 D1/D2/D3/D4
反馈者:雨中的鱼
原文:DLL这个字段的值一般是0210h。
更正:DLL这个字段的值一般是210Eh。


P277 L-3 D1/D2
反馈者:kangaroo
原文:k=1800h,故 ……4020D2h - 400000h – 1800h = 8D2h
更正:k=1A00h,故 ……4020D2h - 400000h – 1A00h = 6D2h

p285 L26 D1/D2/D3/D4
反馈者:manbug
原文:数据目录表(DataDirectory)的第11个成员指向绑定输入。
更正:数据目录表(DataDirectory)的第12个成员指向绑定输入。


P288 L-2 D1
反馈者:senhuxi
原文:文件偏移0C00h处是输出表内容,具体如图10.21所示。
更正:(这句话没问题,是图10.21有问题)图10.21“Offset"用的是10进制表示

P288 L-9 D1
反馈者:usufu
原文:即输入表在内存中偏移4000h的地方。
更正:即输出表在内存中偏移4000h的地方。


P296 L5 D1/D2/D3/D4
反馈者:雨中的鱼
原文:NumberOfNamedEntries为0,NumberOfIdEntries为1。
更正:NumberOfNamedEntries为1,NumberOfIdEntries为0。


P307 L-6 D1/D2/D3/D4
反馈者:未秋叶落
原文: 可以选择“关闭”或者最后将其附加到调试器上的“调试”按钮。
更正: 可以选择“确定”或者最后将其附加到调试器上的“取消”按钮。


P320 L-4 D1/D2/D3/D4
反馈者:hdy981
原文:擅用SDK
更正:善用SDK


P325 L-17 D1/D2
反馈者:hdy981
原文:被映像到
更正:被映射到

P326 L-7 D1
反馈者:hdy981
原文:决大多数
更正:绝大多数

P332 L-7 D1/D2/D3/D4
反馈者:isiah
原文:其是把内存指定地址的映像文件读取出来
更正:其实是把内存指定地址的映像文件读取出来


P335 L-4 D1
反馈者:hdy981
原文:就可以Dump内存境像了
更正:就可以Dump内存镜像了

P337 L-1 D1/D2/D3/D4
反馈者:obaby
原文:大小为450B8h-405000h=B8h。
更正:大小为4050B8h-405000h=B8h。


P367 L9 D1/D2
原文:13.9.2 Themidia的SDK分析
更正:13.9.2 Themida的SDK分析

P388 L15 D1
反馈者:轩辕小聪
原文:callloc_next
更正:call loc_next

P432 L5 D1
反馈者:smartsl
原文:这段代码恢复了Rizng 3级对ntdll.dll
更正:这段代码恢复了Ring 3级对ntdll.dll


P462 L-2 D1
反馈者:hdy981
原文:在后面会用Getmulehandle取基地址
更正:在后面会用GetModuleHandle 取基地址


P467 L15 D1/D2/D3/D4
反馈者:hdy981
原文: S_FileIsDll DD 0 ;存放原始是事为DLL的标志
更正: S_FileIsDll DD 0 ;存放原始程序为DLL的标志



P474 L-275
反馈者:kangaroo
原文:VBegin代码所有的:add esp,4
更正: 更正为:add ebp,4
注:光盘源码正确。


P516 L-9 D1
反馈者:junxiong
原文:执行这句后,ebp=401005h
更正:执行这句后,edx=401005h

P516 L-10 D1
反馈者:junxiong
原文:执行这句后,ebp=401005h
更正:执行这句后,edx=401000h


P525 L-7 D1/D2
反馈者:Fido
原文:创建DLL文件
更正:调用DLL函数

P538 L-1 D1/D2/D3/D4
反馈者:yangjt
原文:MOV ESP,EBP
更正:MOV EBP,ESP


参考文献 L-8 D1
反馈者:usufu
原文:扬季文.80X86汇编语言程序设计教程
更正:杨季文.80X86汇编语言程序设计教程

[b]光盘映像文件勘误[b]

18.2.2 Debug API机制 和 18.2.3 利用调试寄存器机制 目录下的源码:
搜索:ContinueDebugEvent(pi.dwProcessId, pi.dwThreadId, dwState) ;
替换:ContinueDebugEvent(DBEvent.dwProcessId, DBEvent.dwThreadId, dwState) ;

上一篇 下一篇