黑客反汇编揭秘(第二版) 是一个因为源代码可用而导致出现的问题)。Linice弹出“Crl+Q”快捷键(注意目前还不支持USB 接口的键盘)。它没有加载器(预计也不会很快推出),因此,唯一的调试方法就是在入口点插入 INTO3机器命令(操作码是CCh),紧接着手工恢复原来的内容。 EBGOFFYFFF (08 B8408tart:83 9 184848C:<_to_global__aux>55 tit <roturn)to continuo.or (to quitq ld)dnum G Bx2084639E 9E1 add ecx Euab led 自 4×2894B3月n 5明3469442414595n59m64 S.YZX. 244¥ 45 536团 图2.2ALD调试器 ②weMD22.25PMg月 ES 0018 rS-001 1t4 当 Fedora Ele Edit Yew Ieminsl Tabs Help 图2.3不,这不是在做梦!这是Linux的SoftICE! PIce(http://pice.sourceforge..net/)是一个实验性的Linux内核调试器,只以控制台模式进行 操作(换句话说,没有X-Windows平台的产品),仅仅实现了最低限度的功能。尽管如此,它还是 很有用的。 PDG 如图2.4所示的x86 Emulator(http:/ida-x86emu.sourceforge.net/)是以IDA Pro插件形式实 20 溜客安全网WwW.I76Ku.CoM
第2来UNX黑客工具家 现的仿真调试器,并且以没有经过预编译处理的源代码形式发布(这意味着,除了DAPO,还需 要SDK,这是非常难以找到的)。这个仿真程序的主要优势在于,可以在虚拟处理器上运行任意代 码片断。例如,它通过绕过余下的代码,将控制权传递给那个实际检查序列号或者密码的过程 (Procedure)。这样的方法结合了静态分析与动态分析的最佳特性,极大地简化了复杂保护机制的 破解过程。 ■t6 Emulator 000000000 EBP0g0000000 0x00000000 001300000 Skp Jump to Curvor 0x00000000 0x00000008 0x00000000 000000000 AGS 0x00000002 0m00DE0736 AuhD结 01227010000000000000000012B1FA00120170 图2.4仿真器的主面板 2.2 反汇编器 IDA Pro(http://www.datarescue..com/idabase/)这种在任何时候都堪称最佳的反汇编器,现在 也有Linux版本了!FreeBSD与其他操作系统的用户还得接受从仿真器启动的Windows控制台版 本(如图2.5所示),或者说还得继续在本机的MS-DOS、OS/2与Windows上工作。直到最近,DA P0仍然拒绝反礼编没有分区表的文件。不过,这一缺陷已经在最新的版本中消除了。由于缺乏像 样的UNX调试器,因而DA Pro成为主要的黑客工具。 的 PDG 图2.5 DAPro的控制台版本 21 溜客安全网WwW.I76Ku.CoM
黑客反汇编揭秘(第二版) objdump实用软件是dumpbin的同类产品,专用于ELE文件,并且还提供一个简单的反汇编 器。它需要文件提供分区表,不能解释无效字段,而且无法处理经过打包的文件。不过,要是没有 IDA Pro,这个工具还是有用的. 2.3窥测器 在大多数UNX发布包中,可以找到一个有用的工具软件uss(如图2.6所示)。它用于跟踪 正在进行应用层调试的程序所发出的系统调用与信号。这可以收集许多关于保护机制内幕的有用信 息。清单2.1是truss给出的一个报告。 TtuG球IHS26×6fbf了2e 7157948%228808 耳44 (村 t 图2.6用truss跟踪系统调用 清单2.1tuss提供的报告 mmap(0x0,4096,0x3,0x1002,-1,0x0) =671657984(0x2808b000) break(0x809b000】 =0(0x0) break(0x809c000) =0(0x0) break(0x809d000) =0(0x0) break(0x809e000) =0(0x0) stat ("."Oxbfbff514) =0(0x0) open(".",0,00) =3(0x3) fchdir(0x3) =0(0x0) open(".",0,00) =4(0x4) stat ("."Oxbfbff4d4) =0(0x0) open(".",4,00) =5 (0x5) fstat (5,0xbfbff4d4) =0 (0x0) fcnt1(0x5,0x2,0x1) =0 (0x0)】 sysctl(0xbfbff38c,0x2,0x8096ab0,0xbfbff388,0x0,0x0) =0 (0x0》 fstatfs(0x5,0xbfbff3d4) =0(0x0)】 break(0x809f000) PDG =0(0×0) 的 getdirentries(0x5,0x809e000,0x1000,0x809a0b4) =512(0x200) 22 溜客安全网WwW.I76Ku.CoM
第2章 UNIX黑客工具 getdirentries(0x5,0x809e000,0x1000,0x809a0b4) =0(0x0) 1seek(5,0x0,0】 =0(0x0)】 close(5) =0(0x0】 fchdir(0x4) =0(0x0 close(4) =0(0x0】 fstat(1,0xbfbff104) =0(0x0】 break(0x80a3000) =0(0x0) write(1,0x809f000,158) =158(0x9e) exit(OxO) process exit,rval=0 ktrace是UNX发布包提供的另外一个实用工具。它能跟踪系统调用、名字转换、输入/输出操 作、信号、用户模式跟踪,以及从内核进行调试的程序所实施的上下文切换。大致来说,ktrace是 uss的改进型变体。不过,与后者不同的是,它生成一个二进制格式,而不是文本格式的报告(如 清单2.2所示)。因此,要形成报告,必须使用ktrace。 清单2.2 ktrace提供的报告 8259 ktrace CALL write(0x2,0xbfbff3fc,0x8) 8259 ktrace GIO fd 2 wrote 8 bytes "ktrace:" 8259 ktrace RET write 8 8259 ktrace CALL write(0x2,0xbfbff42c,0x13) 8259 ktrace GIO fd 2 wrote 19 bytes "exec of ac failed" 8259 ktrace RET write 19/0x13 8259 ktrace CALL write(0x2,0xbfbff3ec,0x2) 8259 ktrace GIO fd 2 wrote 2 bytes 特:n 8259 ktrace RET write 2 8259 ktrace CALL write(Ox2,Oxbfbff3ec,Oxla) 8259 ktrace GIO fd 2 wrote 26 bytes "No such file or directory" 8259 ktrace RET write 26/0xla 8259 ktrace CALL sigprocmask(0x1,0x2805cbe0,0xbfbffa94) 8259 ktrace RET sigprocmask 0 8259 ktrace CALL sigprocmask (0x3,0x2805cbf0,0) 8259 ktrace RET sigprocmask 0 8259 ktrace CALL exit(0x1) 8265 ktrace RET ktrace 0 2.4 十六进制编辑器 BIEW(http:/belnet,.d.sourceforge,net/sourceforge/biew/biew562.tar.bz2)是一个杂集,集十 六进制编辑器、反汇编器、加密器与ELF检测器于一身(如图2.7所示)。它不带有内置汇编器, 因此,需要直接去破解机器码。当然,这是一个恼人的缺点。不过,由于没有其他更好的选择(唯 一的选择或许是自己去编写一个汇编器),也只能凑合用了。 23 溜客安全网WwW.I76Ku.CoM
黑客反汇编揭秘(第二版)》 888c811b 图2.7BEW十六进制编辑器 2.5转储器 在UNX平台上,每个进程的存储器内容是以驻留在poc目录下的文件集形式来表示的。此 外,寄存器上下文以及其他一些内容也存放在这里。不过,内存转储还不是一个拿来就能用的LF 文件,是不能直接使用的。尽管如此,对它的原始映像进行反汇编仍然是可能的。 2.6自动保护工具 对可执行文件打包不仅能压缩程序所占空间,而且能保护程序免遭破解。在Windows平台, 采取打包这样的措施并不能将程序被破解的日期延迟太久。不过,UNX平台则是另外一回事了! 现在缺少自动的解包器,转储器在数量上也少得可怜,并且还没有像样的调试器可用(特别是对于 Liux以外的其他操作系统来说更是这样)。因此,用打包器处理文件就足够了,能够破解经过打 包的UNX文件的黑客不会很多。只有在强烈的动机(一般来说,缺乏这样的动机)驱使下,黑客 们才会不顾一切地破解打包的文件。 关于UNX与Linux自动保护工具的更多内容将在第20章进一步介绍,同时,本书的网站资 源上也给出了相关的内容(所在目录为PART_01\CHO2 SUPPLEMENTARY), PDG 24 溜客安全网WwW.I76Ku.CoM