黑客反汇编揭秘(第二版)》 1.4十六进制编辑器 很久以前,十六进制编辑器只是一些简单的程序,仅仅能够将二进制文件按照指定地址显示为 十六进制数和正确的字节。程序员经常用Norton Disk Editor作为十六进制编辑器的替代品。随着 时间的推移,开发人员已经给十六进制编辑器配备了反汇编器、汇编器、计算器以及正则搜索函数 等而提升了它们的功能。现在的十六进制编辑器已经能够进行块操作,解释各种不同的文件格式, 以及加密与解密代码与数据片断等。换句话说,十六进制编辑器就像瑞士军刀一样,已经成为通用 的全能工具。 最流行的十六进制编辑器是HIEW(http:webhost..kemtel.ru/-sen)。直到HEW6.l1版本(支 持M亿、PE、NE、LE与ELF格式)为止,它一直是免费的软件。我最喜欢HEW的6.04版,它 包含的程序错误与缺陷要比其商业版本(如图1.12所示)少得多。 pop 83000 001051 8200000 0001059R2千F 83300068600000 cal d.1004068F01.000080000 图1.12老版本H正W十六进制编辑器也很好用 在十六进制商用编辑器当中,最流行的要数WinHex(http:lwww,winhex.com/winhex/ index-m.html)与Hex Workshop(http://wwwt.bpsoft.com)。不过,我不理解它们为什么会流行. 还有一个不错的十六进制编辑器毫不逊色于HEW,它就是HT Editor(http:lhte.sourseforge.. net)。在某些方面,HT Editor甚至优于HEW。HT Editor的主要优势在于,它是提供源代码的免 费软件。与HEW不同,HT Editor让用户可以选用汇编指令的方法(如图1.13所示)。此外,它 支持一个强大的交叉引用系统,在这方面使它几乎堪与DAPO媲美。 WinHex(如图1.l4所示)与Hex Workshop(如图1.l5所示)并不提供汇编器与反汇编器。 并且,这些功能不大可能在将来被加入其中。另一方面,WinHex提供了进行校验和与散列和(比 如CRC16、CRC32、MD5与SHA-1)计算的计算器,这在某些情况下可能带来一些便利。 10 溜客安全网WwW.I76Ku.CoM
第1章 携区客工具启粗了 offe110018 7dalao comode MSVCRI dll:adjust fdivi 7 110B5C0 图1.13 十六进制编辑器HT Editor是H正W的极好替代品 同a☒ X D日母田修 03213901H leteme Explorer M他erO 21u staCrdw 0位1326型 227514 240e200m20221 145017 MSN Ganng Zone 2408200双201952240020022019522532002133务28 012 34 7 BC D E F 00 A82日1F 4900000000 “1 003 0D098040 88 000元0 1000 01 i.s. 03D89日050 00 6 B 0AC301 400 00 000000 00 00 0D890日0 0000 OD 00 00 00 6D 4B C2 006 9064 B70AC301 da五.d.x 0ED898100 8 c.0.H.H.0.. PDG 图1.14 WinHex商业编辑器 11 溜客安全网WwW.I76Ku.CoM
为 黑客反汇编揭秘(第二版) HHex Workshop [samole-bit bmo] 回区 S日Ecit n Tooh w 0000000424F60c0000000 01电E 图1.l5 Hex Workshop商业产品 1.5解包器(Unpacker) 现在,大多数程序倾向于以打包(或者添加保护机制一其实更糟)的形式出现。这样一来, 直接对程序进行反汇编变得不大可能。由于大多数打包器与保护器实施了反调试机制,因此,调试 同样变得复杂起来。 自MS-DOS时代以来,黑客们一直都在积极地创建通用解包器。所有这样的努力都不可避免 地失败了,因为保护机制的开发人员总是能不断地创建出新的诡异机制来与之抗衡。尽管如此,大 多数现代黑客工具(比如,DA Pro,O川yDbg)还是包括了一些通用解包器,能够对一些不复杂的 保护机制进行解包。更为先进的保护机制必须由人工解包。黑客经常会碰到同一种打包器,面对这 种情况最自然的想法是开发一种自动或者半自动解包器,以实现部分自动解包或者简化破解任务。 在以下网站: http://www.exetools.com/unpackers.htm http://programmerstools.org/taxonomy/term/16 http:/www.woodmann.com/crackz/Packers.htm 以及类似网站上能找到许多这样的解包器。 问题在于,这类解包器都是针对特定版本的打包器或者保护器开发的,而不能用于其他版本的 解包。保护机制开发人员更新他们的打包器与保护器越频繁,找到合适解包器就会越困难。因此, 要成功解包受保护程序,一个更为稳妥的办法是进行手工解包。 我的建议是,在开始搜寻合适的解包器之前,应该先弄清保护程序所使用的保护器或者打包器。 PDG 免费软件PED(http:/peid.has.it)能帮你完成这项任务。它维护了一个由各种签名信息构成的海 12 溜客安全网WwW.I76Ku.CoM
第1章携黑客工具启程 量数据库。虽然PED给出的结果不正确或者存在歧义是经常的事,但有工具可用总是比没有的好。 1.6转储器 保存正在运行的程序的转储内容是实施解包所采取的一种通用方法。它几乎可以破除所有打包 器和绝大多数保护器。不过,需要指出的是,你仍须对所得到的转储内容投入相当的精力去探查。 我的建议是,只在反汇编过程中使用转储内容。经过转储得到的程序很可能在最关键时刻运行出错 或者崩溃。尽管如此,还是应该关注用于保存转储内容的实用工具。 最笨拙的转储工具程序ProcDump第一个亮相市场,接下来是Lord PE,它吸取了先行者的苦涩 经验和教训。即使在PE头被保护机制有意修改并且一些内存页面不能访问(设置了 PAGE NOACCESS属性)的情况下,Lord PE仍然能够实施转储内容的保存。PE Tools转储器成为 进化的典范(如图1.l6所示)。PE Tools的基本包可以在任何一个黑客站点找到,比如,在http:www. softpedia.com/get/Programming/File-Editors/PR-Tools.shtml,CrackLab(http://www.cracklab.ru). 而且PE Tools最近的更新版在该项目的主页(htp:/meox.iatp.by)可以找到,不过该主页地址已经 修改多次(基本包因为某些不知道的原因而从网站上拿掉了)。 e说wToot%n0rnHh lnw月=1狮 c:winntisystem32reosvc.cxe 0000024401000000 0001400m 9yemk, 00000204 01000000 0m0020 0m400i0 0om2n00 m或大● 00000.2a℃ 0040m000 000a00m 0000034 00400000 000000 000001F6 00400000 0000000 0003 004000 014000 Dunp Pati 60000140 00400c0 000A700 Dump Region.. 0000004 04500 0元 oda花Eo+ FE Snifter a Taik [Del] oy526 图1.16 PETools是PE文件的最佳转储器 在保存转储内容以后,你就得至少恢复导入表,有时还需要恢复重定位元素表和资源分区 (resource section)。恢复导入表的最好办法是使用Import PE Constructor,可以在网站 http:wave.prohosting.com/get/mackt/上找到此工具,该站点还提供用于恢复重定位元素的ReloX 工具以及具有最基本功能的通用解包器。可以按如下地址获取用于恢复资源表的可用程序集: http:/www.wasm.ru/baixado.php?mode-tool&id-l56。如果这些程序无济于事,可以考虑使用 13 溜客安全网WwW.I76Ku.CoM
黑客反汇编揭秘(第二版) Resource Binder免费程序,获取地址为:http:/www.setisoft.com/ru/redirect.php?did-89。 1.7 资源编辑器 在许多情况下,有必要编辑资源。比如,有时候要替换对话框中的文字、解锁控件,以及改变 标识等。在正规的情况下,资源编辑器是随各个Windows编译器一起提供的,比如Microsoft Visual Studio。不过,很遗憾,许多文件在经过这类程序的资源编辑操作之后,变得不可用了。这是因为 标准的内置资源编辑器并不适合从事黑客范畴的编辑任务。 商用的Restorator Resource Editor(http:/www.bome.com/Restorator)是一种最好的黑客专用 资源编辑器(如图1.17所示)。它几乎可以处理任何任务,并提供所需的各种功能一有时甚至还 绰绰有余。 h 图l.l7使用Restorator Resource Editor编辑资源 在免费的工具软件中,XN Resource Editor(http:/www,wilsonc.demon.co.ukd10 resourceeditor. htm)特别值得一提。虽然这个程序是用高级程序设计语言(Delphi)编写的, 但它同时提供了源 代码。用户可以根据自己的需要去扩展程序的功能。 1.8 窥测器(Spy) 用得最广泛的窥测程序有两种类型一Windows消息窥测器与应用编程接口(API)窥测器。 Windows消息窥测器跟踪发送给窗口和控件的消息,API窥测器则跟踪API调用,包括跟踪程序的 动态连接库(DLL)导出的函数。窥测是最高效与最省时的方法,使黑客可以探查被保护程序的工 作原理。 Microsoft Visual Studio中有一个叫做Spyxx..exe的优秀消息窥测器。而免费窥测器WinSpy具 有相似的功能,并提供源代码,获取这个程序的站点为http:www.catch22.net/software/winspy.asp PDG (如图1.18所示)。 14 溜客安全网WwW.I76Ku.CoM