分享

linux 调试器

 WWWo福oCOM 2008-03-14

下面是新手须知的一个小技巧:为了在入口点上暂停,需要首先确定入口点的地址。为实现这一目标,可以使用标准工具objdump(仅适用于未被保护的文件),或者biew/ IDA:objdump file_name –f。然后将被调试的程序装载到GDBgdb –q file_name),并启动命令break *0xXXXXXXXX,其中0xX是起始地址。再运行命令run来启动程序执行。如果所有这些都正确完成,GDB将马上暂停并将控制传给你。如果没有出现这种情形,那么请在BIEW中打开文件,并在入口点插入断点(代码为CCh),请先记下原来的内容。再启动调试器,当达到断点时,恢复其内容(set (char) *0xXXXXXXXX = YY

汇编语言调试器(ALD,如图2.7所示)(http://ald./)是一个速度快的源代码级调试器,它只有很少的控制,适用于调试汇编代码和二进制文件。它基于ptrace库实现,也具有该库的局限性。现在,它仅在x86平台上成功运行,并能在下列平台上成功编译:LinuxFreeBSDNetBSDOpenBSD。它支持执行的断点、单步执行、查看和编辑转储,以及查看和修改寄存器。它包含一个简单的反汇编器。这些就是它的全部功能!这实在是用于破解工具的最低功能要求。即使是MS-DOSDebug.com也提供了更丰富的功能集。然而,ALD是免费软件,提供了源代码,并能装载没有段表的文件。它适合于学习破解技术。然而,不能将它看成是主要的破解工具。

2.7  ALD调试器

Dudehttp://the-dude./)是一个有趣的源代码级调试器,它的实现并未采用ptrace。当GDBALD开始走向失败时,它却成功了。令人遗憾的是,它只能在Linux中运行,其他操作系统的用户都非常眼红。从系统体系结构来说,它包括如下三个部分:内核模块the_dude.o,实现了底层调试功能;包装库lib-duderino.so;以及外部用户界面,ddbg。一般最好从重新编写用户界面开始。该调试器是自由软件,下载之前,必须先在http://www.上注册。

Linicehttp://www./)是SoftIceLinux中的模拟软件(如图2.8所示)。这是一个功能强大、用于调试没有源代码的二进制文件的内核级调试器。这是任何Linux黑客必备的主要工具。现在它只能在内核2.4版中运行(并且大概也能在2.2版中运行)。当在所有其他版本中编译时,它会在文件iceface.c中出错。它会增加设备/dev/ice,因此会透露它的存在(然而,这并不是一个问题,因为有源程序可用)。它弹出<CTRL>+<Q>快捷键(现在还不支持通用系列总线(USB)键盘),并且它没有装载程序(而且也不会很快出现)。因此,惟一的调试方法就是将机器命令INT 03(操作码为CCh)插入入口点,过后需要手工恢复原来的内容。

PIcehttp://pice./)是Linux中的一个试验性内核级调试器,只能在控制台模式下运行(换句话说,不能使用X-Windows),实现了最小功能集。但是,它可能很有用。

2.8  不,这不是在做梦。这是SoftIceLinux

2.9所示的x86仿真器(http://ida-x86emu.)是一个仿真调试器,这是一个IDA Pro插件,并没有进行预编译,而是以源程序的形式发布(这意味着除了IDA Pro还需要SDK,似乎更难找到)。该仿真器的主要优点是它允许在虚拟处理器上执行任何代码段。例如,它可以将控制传给检查序列号和密码的过程,而绕过其他的代码。这样的技术结合了静态和动态分析的最好特色,极大地简化了破解非常复杂精密保护机制的过程。

2.9  主要的仿真器控制板

2.2.2  反汇编工具

一直以来IDA Prohttp://www./idabase)是最好的反汇编器,现在也有了Linux版本!FreeBSD和其他操作系统的用户只能在仿真器下使用其控制台Windows版本(如图2.10所示),或者必须在MS-DOSOS/2Windows上工作。直到现在,IDA Pro仍然不支持没有段表的文件。然而,这个问题已经在最新的版本中得到了解决。由于在UNIX中缺乏像样的调试器,因此IDA Pro成为主要的破解工具。

工具objdump是与dumpbin类似的一个工具,用于处理ELF文件,并带有一个简单的反汇编器。它要求文件具有段表,并且其中不能有非法的字段。它不能处理压缩文件。然而,如果你手头没有IDA Pro的话,这个工具还是有用的。

2.10  IDA Pro的控制台版本


2.2.4  十六进制编辑器

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

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

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

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

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

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

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

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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多