使用softice for nt,怎么样在PE文件执行的一开始时设断点呢?

LittleStar 2005-03-19 11:25:08
csip只能用于16位程序。
PE程序都是在0x400000开始的,可是我设bpmp 0x401000.然后运行一个PE文件并没有跳出softice:(
请问我应该怎么样设断点呢?
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LittleStar 2005-04-06
  • 打赏
  • 举报
回复
bpx getcommandlinea可以解决
zara 2005-03-20
  • 打赏
  • 举报
回复
soft-ice 有个选项就是在加载 pe 后停留在程序的入口点处的, 缺省应该是选中的. 如果你加载所有的程序都是直接就运行了的话, 就在 Symbol Loader32 的 Setting 里看看吧. 如果只是某些程序这样的话, 是这类的程序有压缩或加密造成的. 可以试试一般的程序开始处都会调用 GetStartupInfo 或 GetCommandLine 这样的 API 来解决: bpx GetStartupInfo 或 bpx GetCommandLine
软件加密技术内幕 要花时间看 第1章 PE文件格式深入研究 1.1 PE文件格式格式纵览 1.1.1 区块(Section) 1.1.2 相对虚拟地址(Relative Virtual Addresses) 1.1.3 数据目录 1.1.4 输入函数(Importing Functions) 1.2 PE文件结构 1.2.1 The MS-DOS头部 1.2.2 IMAGE_NT_HEADERS头部 1.2.3 区块表(The Section Table) 1.2.4 各种块(Sections)的描述 1.2.5 输出表 1.2.6 输出转向(Export Forwarding) 1.2.7 输入表 1.2.8 绑定输入(Bound import) 1.2.9 延迟装入数据(Delayload Data) 1.2.10 资源 1.2.11 基址重定位(Base Relocations) 1.2.12 调试目录(DebugDirectory) 1.2.13 NET头部 1.2.14 TLS初始化 1.2.15 程序异常数据 第2章 PE分析工具编写 2.1 文件格式检查 2.2 FileHeader和OptionalHeader内容的读取 2.3 得到数据目录(Data Dircetory)信息 2.4 得到块表(SectionTable)信息 2.5 得到输出表(ExportTable)信息 2.6 得到输入表(ImportTable)信息 第3章 Win32 调试API 3.1 Win32调试API原理 3.1.1 调试相关函数简要说明 3.1.2 调试事件 3.1.3 如何在调试时创建并跟踪一个进程 3.1.4 最主要的循环体 3.1.5 如何处理调试事件 3.1.6 线程环境详解 3.1.7 如何在另一个进程中注入代码 3.2 利用调试API编写脱壳机 3.2.1 tElock 0.98脱壳简介 3.2.2 脱壳机的编写 3.3 利用调试API制作内存补丁 3.3.1 跨进程内存存取机制 3.3.2 Debug API机制 第4章 Windows下的异常处理 4.1 基本概念 4.1.1 Windows下的软件异常 4.1.2 未公开的可靠吗 4.2 结构化异常处理(SEH) 4.2.1 异常处理的基本过程 4.2.2 SEH的分类 4.2.3 相关API 4.2.4 SEH相关数据结构 4.3 异常处理程序设计 4.3.1 顶层(top-level)异常处理 4.3.2 线程异常处理 4.3.3 异常处理的堆栈展开(Stack unwind) 4.3.4 异常处理程序设计中的几个注意事项: 4.4 SEH的简单应用 4.4.1 Win9x下利用SEH进ring0 4.4.2 利用SEH实现对自身的单步自跟踪 4.4.3 其它应用 4.5 系统背后的秘密 4.6 VC是如何封装系统提供的SEH机制的 4.6.1 扩展的EXCEPTION_REGISTRATION级相关结构 4.6.2 数据结构组织 4.7 Windows XP下的向量化异常处理(VEH) 第5章 软件加密技术 5.1 反调试技术(Anti-Debug) 5.1.1 句柄检测 5.1.2 SoftICE后门指令 5.1.3 int68子类型 5.1.4 ICECream子类型 5.1.5 判断NTICE服务是否运行 5.1.6 INT 1 检测 5.1.7 利用UnhandledExceptionFilter检测 5.1.8 INT 41子类型 5.2 反跟踪技术(Anti-Trace) 5.2.1 断点检测 5.2.2 利用SEH反跟踪 5.2.3 SMC技术实现 5.3 反加载技术(Anti-Loader) 5.3.1 利用TEB检测 5.3.2 利用IsDebuggerPresent函数检测 5.3.3 检查父进程 5.4 反DUMP技术(Anti
chm格式,目录如下。 第1章 PE文件格式深入研究 1.1 PE文件格式格式纵览 1.1.1 区块(Section) 1.1.2 相对虚拟地址(Relative Virtual Addresses) 1.1.3 数据目录 1.1.4 输入函数(Importing Functions) 1.2 PE文件结构 1.2.1 The MS-DOS头部 1.2.2 IMAGE_NT_HEADERS头部 1.2.3 区块表(The Section Table) 1.2.4 各种块(Sections)的描述 1.2.5 输出表 1.2.6 输出转向(Export Forwarding) 1.2.7 输入表 1.2.8 绑定输入(Bound import) 1.2.9 延迟装入数据(Delayload Data) 1.2.10 资源 1.2.11 基址重定位(Base Relocations) 1.2.12 调试目录(DebugDirectory) 1.2.13 NET头部 1.2.14 TLS初始化 1.2.15 程序异常数据 第2章 PE分析工具编写 2.1 文件格式检查 2.2 FileHeader和OptionalHeader内容的读取 2.3 得到数据目录(Data Dircetory)信息 2.4 得到块表(SectionTable)信息 2.5 得到输出表(ExportTable)信息 2.6 得到输入表(ImportTable)信息 第3章 Win32 调试API 3.1 Win32调试API原理 3.1.1 调试相关函数简要说明 3.1.2 调试事件 3.1.3 如何在调试时创建并跟踪一个进程 3.1.4 最主要的循环体 3.1.5 如何处理调试事件 3.1.6 线程环境详解 3.1.7 如何在另一个进程中注入代码 3.2 利用调试API编写脱壳机 3.2.1 tElock 0.98脱壳简介 3.2.2 脱壳机的编写 3.3 利用调试API制作内存补丁 3.3.1 跨进程内存存取机制 3.3.2 Debug API机制 第4章 Windows下的异常处理 4.1 基本概念 4.1.1 Windows下的软件异常 4.1.2 未公开的可靠吗 4.2 结构化异常处理(SEH) 4.2.1 异常处理的基本过程 4.2.2 SEH的分类 4.2.3 相关API 4.2.4 SEH相关数据结构 4.3 异常处理程序设计 4.3.1 顶层(top-level)异常处理 4.3.2 线程异常处理 4.3.3 异常处理的堆栈展开(Stack unwind) 4.3.4 异常处理程序设计中的几个注意事项: 4.4 SEH的简单应用 4.4.1 Win9x下利用SEH进ring0 4.4.2 利用SEH实现对自身的单步自跟踪 4.4.3 其它应用 4.5 系统背后的秘密 4.6 VC是如何封装系统提供的SEH机制的 4.6.1 扩展的EXCEPTION_REGISTRATION级相关结构 4.6.2 数据结构组织 4.7 Windows XP下的向量化异常处理(VEH) 第5章 软件加密技术 5.1 反调试技术(Anti-Debug) 5.1.1 句柄检测 5.1.2 SoftICE后门指令 5.1.3 int68子类型 5.1.4 ICECream子类型 5.1.5 判断NTICE服务是否运行 5.1.6 INT 1 检测 5.1.7 利用UnhandledExceptionFilter检测 5.1.8 INT 41子类型 5.2 反跟踪技术(Anti-Trace) 5.2.1 断点检测 5.2.2 利用SEH反跟踪 5.2.3 SMC技术实现 5.3 反加载技术(Anti-Loader) 5.3.1 利用TEB检测 5.3.2 利用IsDebuggerPresent函数检测 5.3.3 检查父进程 5.4 反DUMP技术(Anti-Dump) 5.5 文件完整性检验 5.5.1 CRC校验实现 5.5.2 校验和(Checksum) 5.5.3 内存映像校验 5.6 反监视技术(Anti-Monitor) 5.6.1 窗口方法检测 5.6.2 句柄检测 5.7 反静态分析技术 5.7.1 扰乱汇编代码 5.7.2 花指令 5.7.3 信息隐藏 5.8 代码与数据结合技术 5.9 软件保护的若干忠告 第6章 加壳软件编写 6.1 外壳编写基础 6.1.1 判断文件是否是PE格式的EXE文件 6.1.2 文件基本数据的读入 6.1.3 额外数据保留 6.1.4 重定位数据的去除 6.1.5 文件的压缩 6.1.6 资源区块的处理 6.1.7 区块的融合 6.1.8 输入表的处理 6.1.9 外壳部分的编写 6.1.10 将外壳部分添加至原程序 6.1.10 小结 6.2 加壳程序综合运用的实例 6.2.1 程序简介 6.2.2 加壳子程序(WJQ_ShellBegin()) 6.2.3 PE外壳程序 6.2.4 加进Anti技术 6.2.5 通过外壳修改被加壳PE 6.2.6 VC++调用汇编子程序 第7章 如何让壳与程序融为一体 7.1 序 7.1.1 为何需要壳和程序一体化 7.1.2 为阅读此章节需要的知识 7.1.3 基于此章节用的的例子程序说明 7.2 欺骗检查壳的工具 7.2.1 fi是如何检查壳的 7.2.2 欺骗fi 7.3 判断自己是否给脱壳了 7.3.1 判断文件尺寸 7.3.2 检查标记 7.3.3 外部检测(使用dll) 7.3.4 hook 相关的api(防止loader和调试api) 7.4 使用sdk把程序和壳溶为一体 7.4.1 sdk的意义 7.4.2 做一个带sdk的壳 7.5 后记:关于壳和程序的思考 第8章 Visual Basic 6 逆向工程 8.1 简介 8.2 P-code传奇 8.3 VB编译奥秘 8.4 VB与COM 8.5 VB可执行程序结构研究 8.6 VB程序事件解读 8.7 VB程序图形界面(GUI)解读 8.8 VB程序执行代码研究 8.9 我们的工具 8.10 VB程序保护篇 附录A 在Visual C++中使用内联汇编 附录B 在Visual Basic中使用汇编
第1章 PE文件格式深入研究 1.1 PE文件格式格式纵览 1.1.1 区块(Section) 1.1.2 相对虚拟地址(Relative Virtual Addresses) 1.1.3 数据目录 1.1.4 输入函数(Importing Functions) 1.2 PE文件结构 1.2.1 The MS-DOS头部 1.2.2 IMAGE_NT_HEADERS头部 1.2.3 区块表(The Section Table) 1.2.4 各种块(Sections)的描述 1.2.5 输出表 1.2.6 输出转向(Export Forwarding) 1.2.7 输入表 1.2.8 绑定输入(Bound import) 1.2.9 延迟装入数据(Delayload Data) 1.2.10 资源 1.2.11 基址重定位(Base Relocations) 1.2.12 调试目录(DebugDirectory) 1.2.13 NET头部 1.2.14 TLS初始化 1.2.15 程序异常数据 第2章 PE分析工具编写 2.1 文件格式检查 2.2 FileHeader和OptionalHeader内容的读取 2.3 得到数据目录(Data Dircetory)信息 2.4 得到块表(SectionTable)信息 2.5 得到输出表(ExportTable)信息 2.6 得到输入表(ImportTable)信息 第3章 Win32 调试API 3.1 Win32调试API原理 3.1.1 调试相关函数简要说明 3.1.2 调试事件 3.1.3 如何在调试时创建并跟踪一个进程 3.1.4 最主要的循环体 3.1.5 如何处理调试事件 3.1.6 线程环境详解 3.1.7 如何在另一个进程中注入代码 3.2 利用调试API编写脱壳机 3.2.1 tElock 0.98脱壳简介 3.2.2 脱壳机的编写 3.3 利用调试API制作内存补丁 3.3.1 跨进程内存存取机制 3.3.2 Debug API机制 第4章 Windows下的异常处理 4.1 基本概念 4.1.1 Windows下的软件异常 4.1.2 未公开的可靠吗 4.2 结构化异常处理(SEH) 4.2.1 异常处理的基本过程 4.2.2 SEH的分类 4.2.3 相关API 4.2.4 SEH相关数据结构 4.3 异常处理程序设计 4.3.1 顶层(top-level)异常处理 4.3.2 线程异常处理 4.3.3 异常处理的堆栈展开(Stack unwind) 4.3.4 异常处理程序设计中的几个注意事项: 4.4 SEH的简单应用 4.4.1 Win9x下利用SEH进ring0 4.4.2 利用SEH实现对自身的单步自跟踪 4.4.3 其它应用 4.5 系统背后的秘密 4.6 VC是如何封装系统提供的SEH机制的 4.6.1 扩展的EXCEPTION_REGISTRATION级相关结构 4.6.2 数据结构组织 4.7 Windows XP下的向量化异常处理(VEH) 第5章 软件加密技术 5.1 反调试技术(Anti-Debug) 5.1.1 句柄检测 5.1.2 SoftICE后门指令 5.1.3 int68子类型 5.1.4 ICECream子类型 5.1.5 判断NTICE服务是否运行 5.1.6 INT 1 检测 5.1.7 利用UnhandledExceptionFilter检测 5.1.8 INT 41子类型 5.2 反跟踪技术(Anti-Trace) 5.2.1 断点检测 5.2.2 利用SEH反跟踪 5.2.3 SMC技术实现 5.3 反加载技术(Anti-Loader) 5.3.1 利用TEB检测 5.3.2 利用IsDebuggerPresent函数检测 5.3.3 检查父进程 5.4 反DUMP技术(Anti-Dump) 5.5 文件完整性检验 5.5.1 CRC校验实现 5.5.2 校验和(Checksum) 5.5.3 内存映像校验 5.6 反监视技术(Anti-Monitor) 5.6.1 窗口方法检测 5.6.2 句柄检测 5.7 反静态分析技术 5.7.1 扰乱汇编代码 5.7.2 花指令 5.7.3 信息隐藏 5.8 代码与数据结合技术 5.9 软件保护的若干忠告 第6章 加壳软件编写 6.1 外壳编写基础 6.1.1 判断文件是否是PE格式的EXE文件 6.1.2 文件基本数据的读入 6.1.3 额外数据保留 6.1.4 重定位数据的去除 6.1.5 文件的压缩 6.1.6 资源区块的处理 6.1.7 区块的融合 6.1.8 输入表的处理 6.1.9 外壳部分的编写 6.1.10 将外壳部分添加至原程序 6.1.10 小结 6.2 加壳程序综合运用的实例 6.2.1 程序简介 6.2.2 加壳子程序(WJQ_ShellBegin()) 6.2.3 PE外壳程序 6.2.4 加进Anti技术 6.2.5 通过外壳修改被加壳PE 6.2.6 VC++调用汇编子程序 第7章 如何让壳与程序融为一体 7.1 序 7.1.1 为何需要壳和程序一体化 7.1.2 为阅读此章节需要的知识 7.1.3 基于此章节用的的例子程序说明 7.2 欺骗检查壳的工具 7.2.1 fi是如何检查壳的 7.2.2 欺骗fi 7.3 判断自己是否给脱壳了 7.3.1 判断文件尺寸 7.3.2 检查标记 7.3.3 外部检测(使用dll) 7.3.4 hook 相关的api(防止loader和调试api) 7.4 使用sdk把程序和壳溶为一体 7.4.1 sdk的意义 7.4.2 做一个带sdk的壳 7.5 后记:关于壳和程序的思考 第8章 Visual Basic 6 逆向工程 8.1 简介 8.2 P-code传奇 8.3 VB编译奥秘 8.4 VB与COM 8.5 VB可执行程序结构研究 8.6 VB程序事件解读 8.7 VB程序图形界面(GUI)解读 8.8 VB程序执行代码研究 8.9 我们的工具 8.10 VB程序保护篇 附录A 在Visual C++中使用内联汇编 附录B 在Visual Basic中使用汇编
基本信息 作者: (俄)Kris Kaspersky(克里斯.卡巴斯基) 译者: 谭明金[同译者作品] 丛书名: 安全技术大系 出版社:电子工业出版社 ISBN:9787121106279 上架时间:2010-6-12 出版日期:2010 年6月 开本:16开 页码:1 版次:2-1 所属分类: 计算机 > 软件与程序设计 > 汇编语言/编译原理 > 汇编语言程序设计 编辑推荐 俄罗斯著名的安全技术专家Kris Kaspersky力作 横跨Windows和UNIX两大主流操作系统 全面介绍多种调试工具和方法 目录回到顶部↑第一篇 黑客工具介绍 第1章 携黑客工具启程 2 1.1 调试器 2 1.2 反汇编器 6 1.3 反编译器 8 1.4 十六进制编辑器 10 1.5 解包器(Unpacker) 12 1.6 转储器 13 1.7 资源编辑器 14 1.8 窥测器(Spy) 14 1.9 监视器(Monitor) 15 1.10 修正器 17 1.11 受保护光盘复制器 17 第2章 UNIX黑客工具 18 2.1 调试器 18 2.2 反汇编器 21 2.3 窥测器 22 2.4 十六进制编辑器 23 2.5 转储器 24 2.6 自动保护工具 24 .第3章 调试器与仿真器的仿真 25 3.1 仿真器概述 25 3.2 历史概况 25 3.2.1 仿真器的应用范围 27 3.2.2 硬件虚拟 31 3.3 流行的仿真器 32 3.3.1 DOSBox 32 3.3.2 Bochs 34 3.3.3 VMware 35 3.3.4 Microsoft Virtual PC 37 3.3.5 Xen 39 3.3.6 最势均力敌的竞争对手 40 3.4 仿真器的选择 41 3.4.1 安全性 41 3.4.2 可扩展性 41 3.4.3 源代码是否可用 41 3.4.4 仿真的质量 42 3.4.5 内置调试器 43 3.4.6 如何在VMware下配置SoftICE 45 第4章 汇编器入门 46 4.1 汇编语言方法论 47 4.2 基于C程序实例解释汇编概念 48 4.3 汇编插入语句 49 4.4 可用的汇编语言工具 50 4.5 汇编编译器的概况与比较 51 4.5.1 评判的基本标准 52 4.5.2 MASM 54 4.5.3 TASM 56 4.5.4 FASM 57 4.5.5 NASM 58 4.5.6 YASM 59 4.5.7 结论 60 第二篇 基本黑客技术 第5章 走进黑客门 64 5.1 按密钥类型划分保护机制 67 5.2 保护机制的强度 68 5.3 商业化保护机制的缺点 70 5.4 定制保护机制的实现错误 70 5.4.1 非授权复制与序列号分发 70 5.4.2 试用期及其弱点 71 5.4.3 算法重建 74 5.4.4 磁盘与内存的修改 78 5.4.5 反反汇编器 78 5.4.6 反调试技术 79 5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 6.2.2 使用批反汇编器 87 6.2.3 从EXE到CRK 90 6.3 实际的破解范例 101 6.3.1 抑制干扰屏的出现 102 6.3.2 强行注册 105 6.3.3 彻底破解或者驯服“About”对话框 108 6.4 总结 111 第7章 通晓应用程序调试技术 112 7.1 调试简介 112 7.2 配套使用反汇编器与调试器 113 7.3 API函数断点 115 7.4 消息断点 117 7.5 数据断点 118 7.6 展开堆栈 119 7.7 调试DLL 121 7.8 总结 122 第8章 在UNIX与Linux下的特殊调试技术 123 8.1 GDB的基础——ptrace 124 8.1.1 ptrace及其命令 126 8.1.2 GDB对多进程的支持 127 8.1.3 GDB简介 128 8.1.4 跟踪系统调用 131 8.2 用GDB调试二进制文件 133 8.2.1 准备进行文件调试 133 8.2.2 跟踪前的准备 138 第9章 Linice内核调试基础 141 9.1 系统要求 142 9.2 编译与配置Linice 143 9.3 引导系统与启动调试器 144 9.4 Linice的基本使用原理 147 9.5 总结 151 第10章 高级调试专题 152 10.1 SoftICE用做日志记录器 152 10.1.1 热身运动 153 10.1.2 更复杂的过滤器 156 10.1.3 SoftICE的动画型跟踪 159 10.2 随机设置断点的技巧 160 10.2.1 单步跟踪的秘密 161 10.3 通过覆盖方法进行破解 169 10.3.1 总体思路 169 10.3.2 工具的选择 170 10.4 确定代码覆盖的算法 172 10.5 方法的选择 173 10.6 程序破解实例 174 10.7 总结 179 第三篇 高级反汇编技术 第11章 反汇编32位PE文件 182 11.1 PE文件结构不同实现形式的特性 182 11.2 PE文件的一般概念与要求 183 11.3 PE文件结构 184 11.4 PE文件的代码插入与删除技术 186 11.4.1 X码概念及其他约定 186 11.4.2 X码的目的与任务 187 11.4.3 对X码的要求 188 11.4.4 插入 189 11.5 总结 215 第12章 在Linux与BSD中反汇编ELF文件 216 12.1 所需要的工具 216 12.2 ELF文件结构 217 12.3 在ELF文件中插入外来码 219 12.3.1 通过合并来感染文件 220 12.3.2 通过扩展文件的最后分区来感染文件 222 12.3.3 通过压缩部分原始文件 12.3.3 而感染文件 224 12.3.4 通过扩展文件的代码分区而感染文件 228 12.3.5 通过下移代码分区而感染文件 231 12.3.6 通过创建定制分区而感染文件 233 12.3.7 通过在文件与头结构之间 12.3.7 插入代码而感染文件 233 12.3.8 在ELF文件中插入代码的实验 234 12.4 反汇编Linux版tiny-crackme程序 241 12.4.1 剖析tiny-crackme 241 12.5 总结 253 第13章 反汇编x86-64程序 254 13.1 简介 254 13.2 需要的工具 255 13.3 x86-64体系结构概述 258 13.4 切换到64位模式 260 13.5 x86-64平台上的“Hello, World”程序 262 13.6 总结 267 第14章 反汇编与破解Linux内核 268 14.1 反汇编Linux内核 268 14.1.1 内核的外围话题 268 14.1.2 攻击内核 269 14.1.3 深入内核 271 14.1.4 错误所在的位置 275 14.2 内核攻击秘诀 276 14.2.1 修改Linux徽标 276 第15章 高级补丁技术 281 15.1 联机补丁的秘密与诀窍 281 15.1.1 最简单的联机补丁器 282 15.1.2 大比拼 284 15.1.3 截取传递信号的API函数 285 15.1.4 硬件断点 287 15.2 几种鲜为人知的破解客户程序的方法 289 15.2.1 破解客户应用程序的方法概述 289 15.2.2 在不编辑字节的情况下进行修改 289 15.3 Windows NT/2000/XP内核黑码事宜 296 15.3.1 内核结构 296 15.3.2 内核类型 298 15.3.3 修改内核的方法 300 15.3.4 修改启动徽标 306 15.4 BSOD之后还有活路吗 308 15.4.1 用SoftICE克服BSOD 309 15.4.2 自动实现的复活过程 313 15.4.3 这个反BSOD程序安全吗 317 15.5 总结 318 第16章 反汇编其他格式的文件 319 16.1 反汇编PDF文件 319 16.1.1 Adobe Acrobat为那些不循规蹈矩的人提供了什么 320 16.1.2 修改Adobe Acrobat 323 16.1.3 使用打印屏幕功能实施破解 324 16.1.4 尽量多懂几种语言 324 16.1.5 PDF文件结构 324 16.1.6 生成加密密钥 328 16.1.7 攻击U-密码 329 16.1.8 如何动手破解PDF密码 331 16.2 总结 333 第四篇 实用代码探查技术 第17章 在Windows上捉迷藏 336 17.1 Windows反调试技术 337 17.1.1 历史在不断地重演 339 17.1.2 自跟踪程序 340 17.1.3 基于物理内存访问的反调试技术 345 17.1.4 Windows 2000/XP SDT Restore如何工作 349 17.2 Windows世界的隐形技术 349 17.2.1 Blue Pill、Red Pill——Windows Longhorn再现《黑客帝国》 350 17.2.2 Blue Pill 350 17.2.3 规避数字签名 350 17.2.4 沉迷于虚拟世界 352 17.2.5 Red Pill 355 17.3 总结 357 第18章 攻克打包器 358 18.1 初步的分析 358 18.2 解包与其他方法 361 18.3 解包算法 361 18.4 搜索原始入口点 362 18.4.1 活动程序转储 362 18.4.2 通过内存中的签名搜索启动代码 364 18.4.3 流行但低效的工具: 18.4.3 GetModuleHandleA与fs:0 365 18.4.4 解包器的副作用 369 18.4.5 基于堆栈平衡找到OEP的通用方法 372 18.4.6 如果调试器跳过了解包器入口点怎么办 375 18.5 转储受保护的应用程序 377 18.5.1 简单转储案例 377 18.5.2 自行搜索 381 18.5.3 从外部查看转储内容 382 18.5.4 动态解密机制 383 18.5.5 对内部数据进行转储 384 18.5.6 打包器的诡计 386 18.6 总结 388 第19章 攻克代码混淆 389 19.1 混码器如何发挥作用 390 19.2 如何破解混淆程序 394 19.2.1 解除代码混淆 395 19.3 黑盒方法 397 19.4 虚拟机牢笼 398 19.5 总结 399 第20章 攻克Linux与BSD打包器 400 20.1 打包器对性能的影响 400 20.2 ELFCrypt 401 20.3 UPX 408 20.4 Burneye 410 20.5 Shiva 413 20.6 打包器的比较 414 20.7 总结 415 第21章 调试与反汇编恶意软件 416 21.1 用调试器反监视 416 21.1.1 时间也会留下印记 416 21.1.2 进程树 418 21.1.3 查看线程 420 21.1.4 恢复系统服务表 426 21.2 攻击程序的核查与反汇编 430 21.2.1 如何反汇编攻击程序 431 21.2.2 分析消息排队攻击程序 432 21.2.3 如何在调试器下运行外壳码 443 21.3 总结 444
作者: (俄)Kris Kaspersky(克里斯.卡巴斯基) 译者: 谭明金[同译者作品] 丛书名: 安全技术大系 出版社:电子工业出版社 ISBN:9787121106279 上架时间:2010-6-12 出版日期:2010 年6月 开本:16开 页码:1 版次:2-1 所属分类: 计算机 > 软件与程序设计 > 汇编语言/编译原理 > 汇编语言程序设计 编辑推荐 俄罗斯著名的安全技术专家Kris Kaspersky力作 横跨Windows和UNIX两大主流操作系统 全面介绍多种调试工具和方法 目录回到顶部↑第一篇 黑客工具介绍 第1章 携黑客工具启程 2 1.1 调试器 2 1.2 反汇编器 6 1.3 反编译器 8 1.4 十六进制编辑器 10 1.5 解包器(Unpacker) 12 1.6 转储器 13 1.7 资源编辑器 14 1.8 窥测器(Spy) 14 1.9 监视器(Monitor) 15 1.10 修正器 17 1.11 受保护光盘复制器 17 第2章 UNIX黑客工具 18 2.1 调试器 18 2.2 反汇编器 21 2.3 窥测器 22 2.4 十六进制编辑器 23 2.5 转储器 24 2.6 自动保护工具 24 .第3章 调试器与仿真器的仿真 25 3.1 仿真器概述 25 3.2 历史概况 25 3.2.1 仿真器的应用范围 27 3.2.2 硬件虚拟 31 3.3 流行的仿真器 32 3.3.1 DOSBox 32 3.3.2 Bochs 34 3.3.3 VMware 35 3.3.4 Microsoft Virtual PC 37 3.3.5 Xen 39 3.3.6 最势均力敌的竞争对手 40 3.4 仿真器的选择 41 3.4.1 安全性 41 3.4.2 可扩展性 41 3.4.3 源代码是否可用 41 3.4.4 仿真的质量 42 3.4.5 内置调试器 43 3.4.6 如何在VMware下配置SoftICE 45 第4章 汇编器入门 46 4.1 汇编语言方法论 47 4.2 基于C程序实例解释汇编概念 48 4.3 汇编插入语句 49 4.4 可用的汇编语言工具 50 4.5 汇编编译器的概况与比较 51 4.5.1 评判的基本标准 52 4.5.2 MASM 54 4.5.3 TASM 56 4.5.4 FASM 57 4.5.5 NASM 58 4.5.6 YASM 59 4.5.7 结论 60 第二篇 基本黑客技术 第5章 走进黑客门 64 5.1 按密钥类型划分保护机制 67 5.2 保护机制的强度 68 5.3 商业化保护机制的缺点 70 5.4 定制保护机制的实现错误 70 5.4.1 非授权复制与序列号分发 70 5.4.2 试用期及其弱点 71 5.4.3 算法重建 74 5.4.4 磁盘与内存的修改 78 5.4.5 反反汇编器 78 5.4.6 反调试技术 79 5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 6.2.2 使用批反汇编器 87 6.2.3 从EXE到CRK 90 6.3 实际的破解范例 101 6.3.1 抑制干扰屏的出现 102 6.3.2 强行注册 105 6.3.3 彻底破解或者驯服“About”对话框 108 6.4 总结 111 第7章 通晓应用程序调试技术 112 7.1 调试简介 112 7.2 配套使用反汇编器与调试器 113 7.3 API函数断点 115 7.4 消息断点 117 7.5 数据断点 118 7.6 展开堆栈 119 7.7 调试DLL 121 7.8 总结 122 第8章 在UNIX与Linux下的特殊调试技术 123 8.1 GDB的基础——ptrace 124 8.1.1 ptrace及其命令 126 8.1.2 GDB对多进程的支持 127 8.1.3 GDB简介 128 8.1.4 跟踪系统调用 131 8.2 用GDB调试二进制文件 133 8.2.1 准备进行文件调试 133 8.2.2 跟踪前的准备 138 第9章 Linice内核调试基础 141 9.1 系统要求 142 9.2 编译与配置Linice 143 9.3 引导系统与启动调试器 144 9.4 Linice的基本使用原理 147 9.5 总结 151 第10章 高级调试专题 152 10.1 SoftICE用做日志记录器 152 10.1.1 热身运动 153 10.1.2 更复杂的过滤器 156 10.1.3 SoftICE的动画型跟踪 159 10.2 随机设置断点的技巧 160 10.2.1 单步跟踪的秘密 161 10.3 通过覆盖方法进行破解 169 10.3.1 总体思路 169 10.3.2 工具的选择 170 10.4 确定代码覆盖的算法 172 10.5 方法的选择 173 10.6 程序破解实例 174 10.7 总结 179 第三篇 高级反汇编技术 第11章 反汇编32位PE文件 182 11.1 PE文件结构不同实现形式的特性 182 11.2 PE文件的一般概念与要求 183 11.3 PE文件结构 184 11.4 PE文件的代码插入与删除技术 186 11.4.1 X码概念及其他约定 186 11.4.2 X码的目的与任务 187 11.4.3 对X码的要求 188 11.4.4 插入 189 11.5 总结 215 第12章 在Linux与BSD中反汇编ELF文件 216 12.1 所需要的工具 216 12.2 ELF文件结构 217 12.3 在ELF文件中插入外来码 219 12.3.1 通过合并来感染文件 220 12.3.2 通过扩展文件的最后分区来感染文件 222 12.3.3 通过压缩部分原始文件 12.3.3 而感染文件 224 12.3.4 通过扩展文件的代码分区而感染文件 228 12.3.5 通过下移代码分区而感染文件 231 12.3.6 通过创建定制分区而感染文件 233 12.3.7 通过在文件与头结构之间 12.3.7 插入代码而感染文件 233 12.3.8 在ELF文件中插入代码的实验 234 12.4 反汇编Linux版tiny-crackme程序 241 12.4.1 剖析tiny-crackme 241 12.5 总结 253 第13章 反汇编x86-64程序 254 13.1 简介 254 13.2 需要的工具 255 13.3 x86-64体系结构概述 258 13.4 切换到64位模式 260 13.5 x86-64平台上的“Hello, World”程序 262 13.6 总结 267 第14章 反汇编与破解Linux内核 268 14.1 反汇编Linux内核 268 14.1.1 内核的外围话题 268 14.1.2 攻击内核 269 14.1.3 深入内核 271 14.1.4 错误所在的位置 275 14.2 内核攻击秘诀 276 14.2.1 修改Linux徽标 276 第15章 高级补丁技术 281 15.1 联机补丁的秘密与诀窍 281 15.1.1 最简单的联机补丁器 282 15.1.2 大比拼 284 15.1.3 截取传递信号的API函数 285 15.1.4 硬件断点 287 15.2 几种鲜为人知的破解客户程序的方法 289 15.2.1 破解客户应用程序的方法概述 289 15.2.2 在不编辑字节的情况下进行修改 289 15.3 Windows NT/2000/XP内核黑码事宜 296 15.3.1 内核结构 296 15.3.2 内核类型 298 15.3.3 修改内核的方法 300 15.3.4 修改启动徽标 306 15.4 BSOD之后还有活路吗 308 15.4.1 用SoftICE克服BSOD 309 15.4.2 自动实现的复活过程 313 15.4.3 这个反BSOD程序安全吗 317 15.5 总结 318 第16章 反汇编其他格式的文件 319 16.1 反汇编PDF文件 319 16.1.1 Adobe Acrobat为那些不循规蹈矩的人提供了什么 320 16.1.2 修改Adobe Acrobat 323 16.1.3 使用打印屏幕功能实施破解 324 16.1.4 尽量多懂几种语言 324 16.1.5 PDF文件结构 324 16.1.6 生成加密密钥 328 16.1.7 攻击U-密码 329 16.1.8 如何动手破解PDF密码 331 16.2 总结 333 第四篇 实用代码探查技术 第17章 在Windows上捉迷藏 336 17.1 Windows反调试技术 337 17.1.1 历史在不断地重演 339 17.1.2 自跟踪程序 340 17.1.3 基于物理内存访问的反调试技术 345 17.1.4 Windows 2000/XP SDT Restore如何工作 349 17.2 Windows世界的隐形技术 349 17.2.1 Blue Pill、Red Pill——Windows Longhorn再现《黑客帝国》 350 17.2.2 Blue Pill 350 17.2.3 规避数字签名 350 17.2.4 沉迷于虚拟世界 352 17.2.5 Red Pill 355 17.3 总结 357 第18章 攻克打包器 358 18.1 初步的分析 358 18.2 解包与其他方法 361 18.3 解包算法 361 18.4 搜索原始入口点 362 18.4.1 活动程序转储 362 18.4.2 通过内存中的签名搜索启动代码 364 18.4.3 流行但低效的工具: 18.4.3 GetModuleHandleA与fs:0 365 18.4.4 解包器的副作用 369 18.4.5 基于堆栈平衡找到OEP的通用方法 372 18.4.6 如果调试器跳过了解包器入口点怎么办 375 18.5 转储受保护的应用程序 377 18.5.1 简单转储案例 377 18.5.2 自行搜索 381 18.5.3 从外部查看转储内容 382 18.5.4 动态解密机制 383 18.5.5 对内部数据进行转储 384 18.5.6 打包器的诡计 386 18.6 总结 388 第19章 攻克代码混淆 389 19.1 混码器如何发挥作用 390 19.2 如何破解混淆程序 394 19.2.1 解除代码混淆 395 19.3 黑盒方法 397 19.4 虚拟机牢笼 398 19.5 总结 399 第20章 攻克Linux与BSD打包器 400 20.1 打包器对性能的影响 400 20.2 ELFCrypt 401 20.3 UPX 408 20.4 Burneye 410 20.5 Shiva 413 20.6 打包器的比较 414 20.7 总结 415 第21章 调试与反汇编恶意软件 416 21.1 用调试器反监视 416 21.1.1 时间也会留下印记 416 21.1.2 进程树 418 21.1.3 查看线程 420 21.1.4 恢复系统服务表 426 21.2 攻击程序的核查与反汇编 430 21.2.1 如何反汇编攻击程序 431 21.2.2 分析消息排队攻击程序 432 21.2.3 如何在调试器下运行外壳码 443 21.3 总结 444

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧