代码丛林中的生存手册——评《黑客反汇编揭秘》
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优势就 是对运算表达 式、条件 分支语句 和循环语 句 的处理 ,特别 是处理 复杂条 件分支 、多层循环 嵌套和复杂运 算表达 式 的情况 下 ,高级语 言很容 易保 持很好 的可读性 。这也从侧 而体现 了在汇 编语 句 中恢复复杂表达式和逻辑结构的困难 ,
结构卞成 的汇 编代码进 行了详细 的举例
辨 函数的方法 ,以及各种类型 的编译器
多云彬 :汇 编编程 I 站 htt 殛 l P:, ,
8/y a .e 的站 长.扶 DS S. eh nt / / O 年代开始 就喜 欢用汇编s程旁 .一不小心就把这
个 习惯 带飘 7 Wi o 时代 .著有 n W d S
和反汇编 器是代码 分析人 员手 中的两大 法 ,熟练掌握这两 大法宗只有 好处没
的反汇 编代码 中分析并重建算 法 ,根据
可执 行文件 大小,几 百 K到几 M的可执
行文件 的反 汇编代码 可达几万 到上百万 行 ,无论是静 态分析这些 反汇编代码 或
有坏处 ,接 下来的几章 介绍这 些法 的
代码 优化技 术的专栏作 家,一直致 力 于
研 究 安全 与系统 程序 设计 方向 的 问题 ,
内容涉及编译器 开发、 优化技术、 安全机
制研 究、实 时操 作系统 内核 的创 建 以及
反病 毒 程序 的设 计 等 多个 领域 。他 从
通过野外 活动 自己摸索 出这些技 巧,但 是归纳 出这些技 巧必须付出大量的精力,
和 分析 ,内容涉 及 以下几大方面 :
l 程序各部分的’编代码表现形式 奉章 中也 以大量 的篇 幅讲解 了对算法 和 、 『 厂
— —
当 C编 译器将源代码编程 成可执行
逻辑进行 逆 向恢复的步骤 。 在这一章 中, 作者使用V sa + 、 iu ]C+
B r a d C + W t o + 等 多种编译 o l n + 和 a c m C +
们更需要 的足一本 《 生存手册》而 不是 简单 的路 线图 ,它可 以让你在任 何丛林 中都可 以 自己找到止确的路线 。 《 黑客反汇编揭秘 》 一书 是这样一 本生存手册 ! 《 黑客反汇编揭秘》的英文 原版书 名
读者在后 面的阅读 中,能随 时意 识到学 到 的知识可用于哪个步骤 。 “ 工欲善其事 , 必先利其器 。调试 器 ”
维普资讯
代 码 丛 林 中的生 存 手册
评 黑客反汇编揭秘
■ 罗云彬 /文
在前几年 , 有一本叫 《 生存手册》 来自 鲁置● . 皇量}
为 ̄a krD ss eb igUc vr d , H ce ias m 1n no e e} 作
强 有 打的 再事 铱护 技 术
最后 第 9到 l 章 的内容简单阐述 了 2
提 高软件 分析难度 的技术途径 ,包括反
调试技术 、反汇编防范技术和新安全技术
与展望 , 这几章写得都很简洁 , 但却都说 到 了点子上 ,特 别值 得一提 的是作 者在 此演示 了在 W n o s id w 操作系统下用 自 修 改代码 来防范反汇编 的方式 ,这 几章 中 还有很 多在软件架 构上提 高代码抗 分析 性 的建议也是非常值得 一读的。 怎样 , 有了这样一本 生存手册 , 你准
性分析 ,并对优化和 非优化编译 模式下
生成 的代码也进行 了比较。 要是 《 生存于 册》 一书能有这么 系统性的话 , 恐怕读者 连丛 林中每一种植物也都 能认 出来 了! 读者可 能有些疑虑 , 这才一章呀 , 一 章 的内容能把这么 多 内容都讲透彻 吗? 这也 正是本书唯一 让人费解 的一 点:作 者竟然在 这一章中安排 了近 4 0 的内 O页 容 ,占全书篇幅 的三 分之二还 多 !作者 不会 是想 申请单章最 大篇幅 的吉尼斯 记
书风靡一 时,这是一 本在野外 冒险、历 险、 探险环境下使用的手册 , 手册 中提供 的知识 可以帮助 人们脱离困境 ,甚至挽 救 自己的生命 。这 本被称为英 国皇家特
种部 队权 威教程 的书提供 了什 么呢?它 提供 的是方法和技 巧,虽然人 们也可 以
者K i Ksesy rS aprk 是黑客破译 、 反汇 编与
中整 理出对象的模样 ,再从 c +的层次 +
去分析程序的算法 。
3 、涉及函数的知识—— 函数 是可执
备好进 入代码丛林探 险一番了吗 ?巴
行 文件 中最基本 的结构单元 ,在一堆汇 编代码 中分辨 出函数是必须掌握 的基本 功, 另外, 分析函数不可避 免地要涉及 函 数参数 的传递规则 、 局部变量 、 寄存器变 量等 内容 。作者 以大量的实例 讲解 了分
录吧!
代码 是很重要的 , 为只有对前 者的分 析才是 有效劳动 。作者在此分析 了启动 函数和 库函数的细微特 征,使读 者在寻 找用户 代码的过程 中不至于迷 失方 向。 2 + 对象的汇编表玑方式—— 对 、C + 于代码 分析人 员来 说,在分析过程最 容 易陷入 其中无法脱身 的迷宫就 是 C + + 对 象 ,因为 C + + 对象总 是以 V B T L的方式 间接 调用虚函数 ,在汇编 中表现 出来的 就是大量的 调用都是cl [ i x] ale + x形式的, sx 这使分 析者很难搞清 楚调用之 间的来 龙 去脉 。但 是从 C +源代 码的角度 来说 , + C + 象又是很容 易阅读的 ,本 章中作 +对 者 详细 分析 了C + + 对象 中虚 函数、构造 函数 、 析构函数、 对象和 ti 指针、 e hS nw  ̄dlt操作符等结构的汇编表现方式, eee 通过这 些技巧 ,读者可 以先从 汇编代码
文件时, 了程序员写的代码部分 ( 除 姑且
称为用户代码 )被编译后的汇编 代码 外, 可执行 文件 中还包括 由 C编译器 自行插
器 生成 的例 了对上面 这些 内容进 行差异
入的启动函数、 函数代码等。 库 如果需要 分析并 重建程序 的算法 逻辑, 区分哪些
是用户 代码,哪些 是编 译器 白行插 入的
20年开始连续创 作了多部加密和解密、 03 内存 优化等方面 的力作 ,作 品销量在安 全类 图书中名列前茅 。 本书在 内容 的编 排上很注重 节奏的 掌樨 ,最大程度地 体现 了深 入浅出的原
则,以防止读 者一开始就被过 于丰富 的 内容 吓跑。
书的前 4 以最 简单 的例 子说 明了 章 分析 并修改一个可执 行文件 的流 程,第 1 章 巾作者列 一个 只包含一句密码 、2 比较语句 的 C 程序 ,然后用 1 进制编辑 6 器演 了代码和数据 在编译后 的可执行 ÷ 文件 中的保存方式; 章 中对文件进 行 第3 反汇编 , 讲解如何找 出密码 比较指 令 第 4 章中演示如何用 1 进 制编辑器修改 比 6 较指令 以达到永久破解程 序的 目的。 4 前
4 、高级 语言 的运算 符和 逻辑结构
— —
如果说前 4章 是对丛 林探 险进行 大 纲式的介绍, 5 7 第 到 章是探险工具的使 用说明, 那么接下来第 8 “ 章 识别高级语 言的关键 结构 ”就 是真正的丛 林生存细
则。 顾名思义 , 这一章对高级语言 的各种
和汇 编语言相 比,高级语 言的最大
章 占的篇幅仅为 区区二十多页 ,读者可
是在代 码的丛林 中艰 难跋 涉 以求在迷 宫
中找到 出路的过程 。有多少代码 分析 人
以及代码调试 的人们 ,他们做 的都 是什
么样的工作 呢?太简单 了, 电影里 面的
员在计算 机前坐上整 个通 宵 ,就 是为 了
搞清 楚 个特大型循环 的算法并找 到正 确 的循环 出 口。 很 多代 码 分 析 的 网上 教 程 往 律 是 “ o tIE 在Sf—C 中设置一个断点 , 程序 中断
甚至是生命的代价 。《 生存手册》可 以让 人们迅速 掌握这些技 巧,如果有 人置身 于热带丛林 中, 那么依靠这些技巧 , 他就 能 以最快 的速度找 到最 正确的路线 来走 出丛林 。 再 来看 一个 风马 牛不 相及 的 问题 , 从事软件破解、 代码逆向工程、 黑客活动 者动态跟 踪 序 的执 行,分析过 程更像
是不可 能反编译 源代码 ,只 能从软件
这种 教材 就像 告诉你 :“ 从林 中 向左 扯
走 多少 ,再 r右走 多少步,过河 ……好 口 J 了,我们看到丛林 的边缘 了。 ”但 是,我
以在此 了解破解软件 的全过程 ,但这只 是热 身运 动而 已,作者想在此说 明的是
整个破解 过程 由哪些 阶段组成 ,以便让
程序 员 J2 0 1 04 l 0 127
维普资讯
I■ 蚕 ■ _ 墨 ■ ■
¨I o 阳 m m e q r r
用法。
第7 章以很少的篇幅讨论了调试器 百种组合中正确重建函数的原型和调用
和 反汇编器各 自的优缺 点并解 释 了为什 么应该灵活结合使 用这两种工 具。 函数 的语 句。
后按 F1 2多少下 ,然后 按 F 8进入 于程 序 ……最 后找到某条指 令修改就好 了 ” ,
黑客和破解 者只要在计算机 前敲上几 分 钟键盘, 就能找到要破解的 目标所在 , 接 下来 ,就 是如何在剩下 的时间 中把密码
试 出来 。
但 如果读 者真的跨入 了从事代码分 析 的行业 ,就 会发现事情 的关键根本不 是 如何破解关键 代码 的问题 ,而是如 何 去 找出关键代码 的 问题 ! 换句 话说 ,商 业化 的软件有相 当大的 比例 是用 C 者 或 C + 的,编译类 型的语 言最大 的特 点 +写
(idw ( n o s环境 - 2位 汇编语言程序设 W F3
计》等书 现供职 于浙江联通研友 中心
- 责任编辑:罗景文 (w@cd.e) i j snnt
在 不 吲的 函数类 型下 传递参 数 的方式 , 最终 ,读者能够通 过这方面 的知识从上
128 I程 序 员 I 0 4 1 2 0 . 0