首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.2.3  侦查软件

truss是一个很有用的工具,可以在大多数的UNIX发布包中找到(如图2.11所示)。它应用程序级别追踪系统调用和被调试的程序发出的信号。这样能够收集许多关于保护机制内部的有用信息。

清单2.7  truss报告样例

ktrace是发行包所提供的另一个工具。它追踪系统调用、名称翻译、输入/输出操作、信号、用户模式追踪,以及从内核级别进行在被调试程序的上下文切换。总起来说,ktrusstruss的一个增强版本。可是,与后者相比,它产生二进制格式的报告,而不是文本格式的报告。因此,要得到报告就还需使用工具kdump

2.11  使用truss追踪系统调用

清单2.8  ktrace报告样例

2.2.4  十六进制编辑器

BIEWhttp://belnet.dl.sourceforge.net/sourceforge/biew/biew562.tar.bz2)是一个集十六进制编辑器、反汇编器、加密器和ELF文件阅读器等功能于一身的工具(如图2.12所示)。它缺少一个内置的汇编器,因此,必须直接在机器码级别上进行破解。当然,这是一个不合理的漏洞。可是,并没有更好的替代工具(惟一的最大可能就是自己编写一个汇编器)。

2.12  BIEW十六进制编辑器

2.2.5  内存转储程序

UNIX中,每一个进程的内存内容都表现为驻留在/proc目录中的文件集的形式。此外,寄存器内容和其他数据也存放在该处。然而,内存转储还不是直接可用的ELF文件,也不适合于直接使用。但是,可以反汇编其原始映像。

2.2.6  自动保护工具

可执行文件的压缩文件不仅可以用来减小程序的大小,也可以用于保护文件免于被破解。在Windows中,这样的做法并不能把程序的破解推迟多少时间。但是在UNIX中就不一样!在UNIX中没有自动的解压缩程序,只有很少的几种存储程序,并且没有像样的调试器(特别是对于Linux之外的系统)。因此,使用压缩文件就足够了,能够破解它的黑客并不会太多。为了破解它,黑客们需要很强的动机(一般都没有这样的动机)。

所有压缩文件都存在的一个严重问题是,它们极大地减小了被保护程序的可移植性(当它们包含特别的反调试技术时,情形更严重)。此外,我在实际应用中遇到的压缩程序都只适用于Linux,不能用于FreeBSD和其他UNIX版本(虽然编写这样的压缩程序是可能的)。

Shivahttp://www.securereality.com.au/)是能够使用的功能最强大的压缩程序,虽然它是基于Windows程序员很久以前就知道的陈旧思想而实现的。它基于以“洋葱层”模型为基础的一种多层加密模型来实现,使用了带有反调试和反汇编技术的多态引擎,可以抵御GDB和其他利用ptrace进行调试的调试器,能成功地阻止straceltracefenris,并且能避免通过 /proc目录来获取程序转储。详细的信息可从http://www.blackhat.com/presentations/ bh-federal-03/bh-federal-03-eagle/bh-fed-03-eagle.pdf中获得。虽然一般认为Shiva是不可攻破和不能破解的,但是它并没有给有经验的黑客造成任何严重的障碍。而且,该压缩程序的过分积极的特性反而引起了很多的问题。特别地,fork函数停止工作。不过,Shiva的出现仍然是保护机制开发方面的一个很大的进步。对于破解的新手来说,这是最好的选择。

Burneyehttp://packetstormsecurity.nl/groups/teso/burneye-1.0.1-src.tar.bz2)是一个常用的,但功能较差的压缩和保护程序。很久以前就被破解了,只有懒惰的人才无法在因特网上找到破解它的指南。这里仅给出能够找到这类指南的一个很短的地址清单:

r  http://www.packetstormsecurity.org/groups/teso/indexsize.html

r  http://www.activalink.net/undex.php/BurnEye Encrypted Binary Analisis

r  http://www.securiteam.com/tools/6T00N0K5SY.html

它使用一种异常的主要机制来检测一个调试器,即简单地发出信号5trace/ breakpoint trap)。如果GDB或者类似的调试器不存在,该信号会将控制传给特定的过程,该过程会把“秘密的”内存单元的内容加1。如果调试器存在,该机制会产生一个异常。如果使用“正确的”调试器,即绕过ptrace而工作的调试器,比如Dude或者Linice,那么该压缩程序就很容易被破解,虽然并不能像你所期望的那么快(因为需要考虑大量的复杂代码)。总起来说,Burneye适用于抵御没有恶意的黑客。在大多数情况下,并不需要更多的工具。

624http://sed.free.fr/624/)是一个小巧且少为人知的压缩程序。它每周运行6天,每天24小时,星期天休息(开个玩笑)。尽管如此,它还是一个值得收藏的工具。

Ultimate Packer for ExecutablesUPX)(http://upx.sourceforge.net/)是一个传奇性的跨平台压缩程序,它能在从AtariLinux的大多数平台中运行。它并不能阻止被调试,甚至更糟糕,它包含一个内置的解压缩程序,可以用来将被保护的文件恢复到其原始形式。然而,经过一些修改(可能是因为提供了源代码),它具备了抵御黑客技术的完整功能要求。与使用现有的保护程序插件相比,稍微增强UPX的功能更有效,因为UPX的任何改进版本都必须重新被研究,这使得黑客不能使用一样的破解方法。自然地,你需要使用反调试技术来升级该压缩程序。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论