第1章携黑客工具启程 z winspy++[00530-400.Winspyl 。 00530400 Wr5w4+100530400w5p 株2-67/3432+50商 0000000 000000000 图1.18免费的WinSpy工具软件 在我看来,最好的API窥测器非Kerberos(htp:/www.wasm.ru/baixado.php?mode= tool&id=313)莫属。其作者Rustem Fasihov觉得所有其他窥测器都难以满足他的需要,于是自行 开发了这个软件(如图1.19所示)。然而,萝卜白菜,各有所爱。自然,就有许多黑客偏向使用免 费软件APISpy32(htp:/www.internals..com)。不过,像SoftICE与OllyDbg这样的全能调试器, 可以根据事先选取的模板进行配置以便执行API窥测器的功能。这样一来,在进行程序调试时就 没有必要再另外去查看由Kerberos和APISpy32生成的长长清单了。 kerberos v1.02 IC]Rustem Fatthoy 何☒ Browse Save As 8其o0t About 图L.l9 Rustem Fasihov开发的Kerberos API窥测器 1.9监视器(Monitor) 如果要揭示你所探查的程序访问了哪些文件或者注册库分支,使用相应的文件与注册库监视器 是很方便的。 这两个监视器都是由Mark Russinovich(如图1.20与图1.21所示)开发的,他是研究Windows 内幕的一位传奇人物。在很长一段时间内,这两个软件都是免费分发的,获取站点为 http:/www.sysinternals.com。不过,自2006年1月以来,这个网站的创始人Mark Russinovich与 15 溜客安全网WwW.I76Ku.CoM
为 黑客反汇编揭秘(第二版) Bryce Cogswell就成为微软公司的员工了。尽管他们许诺自已的实用程序仍将坚持免费提供,但很 有可能出现的一种局面是,他们只向合法的Windows用户免费提供,所以我奉劝诸位还是赶快下 载,过了这个村可能就没有这个店了。 图1.20 由Mark Russinovich开发的File Monitor 舒 的 PDG 图1.21 由Mark Russinovich开发的Registry Monitor 16 溜客安全网WwW.I76Ku.CoM
第1章携黑客工具启程 1.10修正器 对程序实施黑码操作,有两种截然相反的方法。最难(但也是思路最正确与最不应受到处罚) 的方法是创建序列号、密钥文件等程序部件的定制生成器。黑客一旦分析出工作算法,就创建一种 类似的密钥生成器。这样做既单调乏味又累人,特别是当你注意到对大多数保护机制只需更改十几 个字节就可以使它失效时更是这样。不过,你应该记住,发布被黑的文件,很可能惹上官司。此外, 可执行文件和DLL库文件太大了。因此,随之就有了一个很自然的想法,除了遭“黑”的文件之 外,什么地方含有需要修正的字节?自然地,普通用户不会自己动手去修改相关文件,因此,这个 过程一定是自动进行的。 通常,可用fc.exe实用工具来得到原始文件与它的“遭黑”版本之间的差异列表。这个工具程 序是作为Windows发布包的一部分而提供的。要将所需要的变更引入可执行文件或者DLL文件, 就得使用修正器程序,这种工具程序是任何一位黑客在几分钟内就能编写出来的。要是你懒得动手 亲自编写或者没有时间,可以直接通过http:lwww.wasm.ru/baixado.php?mode-tool&id=35找到 一堆拿来就用的修正器程序。 如果程序经过某种打包器或者保护器的打包或者保护,要修正程序的字节会很困难。在这种情 况下,就得直接在内存中修正为程序施加打包或者保护的工具程序。要做到这一点,首先应找到一 些专门的工具,比如Process Patcher(http:/www.wasm.ru/baixado.php?mode=tool&id=38),R!SC's Process Patcher (http://www.wasm.ru/baixado.php?mode=tool&id=39)ABEL Self-Learning Loader Generator(http:/www.wasm.ru/baixado.php?mode-tool&id-l44)。最后的这个程序根据正 则模板而不是固定偏移量来搜索要修正的字节。在大部分情况下,这使经过稍微修改的被“黑”程 序的新版能够生存下去(要是修正不是发生在保护机制中而是程序的相关部分之中的话)。 1.11受保护光盘复制器 复制受保护光盘的行为并不算是一种很“黑客”的方法。它更多是盗版者惯用的手段。不过, 偶而也需要涉及这种活动。因此,能复制受保护光盘的复制器是有用处的。 最佳商业复制器要数Alcohol 120%(http:/www.alcohol--soft.com)与CloneCD(htp:/www. slysoft..coml/en/clonecd.html)。利用Daemon Tools免费工具程序(http:/www.damon-tools..cc),用 户可以安装由这两个工具程序创建的CD映像,并保存到自己的硬盘,十分方便! PDG 17 溜客安全网WwW.I76Ku.CoM
CHAPTER 2 第2章 UNIX黑客工具 在黑客看来,UNX缺乏像样的黑客工具软件,并且也不能指望很快就会有这样的工具软件出 现。因此,黑客们只能赤手空拳挖空心思地去搏击了。最令人祖丧的是连功能全面一点的调试器也 没有,比如,即便没有SofICE这样的工具也得有OllyDbg这样的工具吧。诸如内存转储器、各式 补丁器以及打包文件的自动解包器之类的小型工具,也必须自己动手去写,因为ET上没有什么 还算不错的工具可用。你能够找到的就是一座荒无人烟的茫茫墓园,里面到处是作古多年的项目。 我希望,情况会在未来几年内有所改观。毕竟,需求会刺激供给!不过,在这里我还是打算先 简要描述一下现有的适合黑客活动的软件概况(顺便说一下,开发复杂的保护机制时同样需要调试)。 2.1调试器 GDB是基于ptrace库的跨平台源代码调试器,它主要面向提供源代码的应用程序的调试。GDB 几乎不能用于黑客操作。它支持硬件断点运行,但是不支持为读写内存而设置硬件断点(不过,在 VMware仿真器上启动时,就用不起来了)。并且,GDB不能中断和修改共享内存(换句话说,基本 上不能用它来调试程序)。它缺少内存搜索功能,如果文件的分区表(Section table)存在无效结构, 或者文件没有分区表,或者文件的分区表是经过裁剪的,那么它就会拒绝加载这个文件。GDB是以 控制台应用形式实现的复杂命令系统,即使用小字体来完整描述全部命令也要大约300页的文本篇 幅。如果你愿意的话,可以给它补充一个图形外壳(这样的外壳多如牛毛)。不过,优美的界面对于 修正一个残破的内核并没有太大的帮助。在漫长的发展历程之中,GDB变成了许多反调试技术的杂合 体,其中大多数反调试技术保留了自身的特色。尽管如此,GDB也有优势可言。首先,它是免费的, 根据GNU许可进行发布(GNU调试器的名字由此而来)。而且,它是作为大多数UNDX发布包的一部 分而提供的,甚至不用退出调试器就可以为可执行文件打补丁。图21给出了GDB在工作的情形。 在这里,给新手一个小小的提示:要在程序的入口处设置断点,首先必须确定其地址。为了达 到这个目的,可以使用标准的objdump实用工具(仅限于非受保护文件)或者说使用命令 biew/IDA:objdump file_name-f。然后,将正在调试的程序加载到GDB(gb-g PDG file_name)之中,并发出命令break*0 xxXXXXXXX,这里的0xX就是起始地址。接着,发 溜客安全网WwW.I76Ku.CoM
第2章UNIX黑客工具X 出run命令启动要执行的程序。如果所有的步骤都正确地实施了,GDB将立即中断并将控制权传 递给你。如果不是这样,那么首先在BEW中打开该文件,并在入口点(代码CC)插入一个断 点,记住原先的内容。接着,重启调试器,当到达断点位置时恢复它的内容(set{chax} *xXXXXXXXX=YY)。 回☒ 量即D01日ehr口☒ at Bxbfbrrdan ocals et.Pravions framn's sp is B CGb 图2.1GDB在工作 Assembly Language Debugger(ALD,http:/∥ald.sourceforge..net/,如图2.2所示)是一个带有 最小控制功能的快速源代码级应用程序调试器,面向汇编语言与二进制文件的调试。ALD需要使 用带有各种可能结果的ptrace库。目前,它只能在x86平台上运行,并且可以成功地编译为在Linux、 FreeBSD、NetBSD与OpenBSD操作系统上运行的版本。它支持设置运行断点、单步执行、查看与 编辑转储堆,以及查看与修改寄存器。它还包含一个简单的反汇编器,就是这些了!这是从事黑客 工作再不能少的最低限度工具配置。即使是MS-DOS的Debug.com所配备的家当也比这丰富。虽 说如此,ALD是一个免费软件,提供源代码,并可以下载没有分区表的文件。它很适合用于学习 破解艺术,不过,它还算不上一个基本的黑客工具。 Dude(http:/the-dude.sourceforge..net/)是一个有趣的源代码级调试器,通过绕过ptrace来进 行操作。它在GDB与ALD开始走下坡路时获得了成功。遗憾的是,它只是在Linux下可用,其 他操作系统的用户对此嫉妒得眼睛都绿了。在体系结构上,可以将Dude分成三个主要部分:实施 低层调试功能的内核模块the_dude.o、库包libduderino.so以及外部用户接口ddbg。一般地说,从 重写用户接口开始会更好些。虽然这个调试器是免费提供的,但是在下载之前,必须先在 htp:l/www.sourceforge.net上注册。 Linice是Linux平台上的SoftICE近似产品(如图2.3所示)。它是用于处理没有源代码的二进 制文件的强大内核级调试器。这对于任何一位Liux黑客来说都不失为一项重要工具。目前,它只 处理内核版本2.4(可能内核版本2.2也行)。在编译成其他版本的程序时,Linice给出iceface.c文 件有错,然后就瘫痰了。它由于加入/ev/1ce设备而暴露了自身在系统中的踪迹(不过,这不 19 溜客安全网WwW.I76Ku.CoM