逆向工具综述(下)
类别4:十六进制编辑器
如果你已经在反汇编器中进行了软件分析,并用调试器跟踪了它的运行,此时就会需要对程序代码进行一定的干预来更正或修改一些文本字符串、修改值或其他包含在软件中的二进制形式的信息。
此时十六进制编辑器就派上用场了。过去有段时间我习惯于阅读游戏杂志Top Secret,我只是将十六进制编辑器和保存游戏的修改这两者联系起来。作为读者我会发送众多的地址偏移量和需要在被保存的文件中修改的值,比如获取一定的游戏金币或者其他游戏中的资源。
软件市场上有许多的带有不同功能的十六进制编辑器,比如内置数据结构(意味着该十六进制编辑器可以使点阵元素或exe文件内部结构可视化)查看功能。一个著名的例子就是WinHex,它常用于数据恢复(它内置了对很多系统文件的支持),但是在我看来它并不适合做一些在软件中“挖掘”的工作,尽管它也能够一定程度地胜任。
HIEW
这是我的首选十六进制编辑器,真是无法想象假如没有它我该如何工作。它看上去很像一款老旧的控制台软件,但其实它是宛如野兽般的存在。HIEW(缩写于Hack’s View)既是一个十六机制编辑器,也是一个反汇编器。它不仅支持x86、x64、ARM V6处理器架构,还支持NE、LE、PE/PE32+、ELF/ELF64文件。这款从1991年就开始开发的软件拥有庞大的用户数据库,并且至今仍保持规律的更新周期。
多亏了HIEW我们不仅能够修改二进制文件数据,而且即使要修改的对象是一个软件也可以修改它的代码。内置的反汇编器允许对代码和函数做定位,也可以让我们在内置的汇编器的帮助下对已经存在的指令做修改。这意味着你不需要知道十六进制的核心代码,恰相反只要能够写入 mov eax,edx 这样的指令就够了,HIEW会自动帮我们把修改后的指令编译好写入二进制文件中。
HIEW还能够像IDA一样反复更换工具,如果我们有一个简单的任务需要做,其最大的优势在于操作速度非常快、内置代码分析和直接修改选项的能力。
图16:HIEW十六机制编辑器和反汇编器
Hex Workshop
Windows 上有许多有用的选项的十六进制编辑器,比如文件比对、区块位操作、生成校验和,还能够查看许多流行文件格式的结构。
图17:Hex Workshop十六进制编辑器
HxD
免费的十六进制编辑器,拥有基本的功能和选项,比如编辑、搜索、文件比对。它支持同时打开多个文件,也可以打开内存中的不同进程以获得对磁盘的直接访问。
图18:HxD 十六进制编辑器
类别5:资源修改器
Windows应用程序的特色是所有像图标、图片、表格、本地化字符串还有其他信息,都被保存在PE文件格式中的一个特殊区块——.rsrc段。这些数据在编译后连接时被保存于其中。由于所有的程序文件都被保存于一个exe或dll输出文件中,在文件大小不变的情况下如果我们需要修改一些信息直接使用十六进制修改器即可,但是当我们需要增添新的数据或者会改变原有文件的大小的时候(比如更长的文本或者另一张图片),我们就需要用到资源修改器。
资源修改器除了能对应用程序资源做修改,也可以让我们整体观察该程序中还包含了什么其他资源。
Resource Hacker FX
Resource Hacker过去曾是最流行的资源修改器,但是它却很久没有再更新过了。不过新的补丁的出现使这款资源修改器得以新生。
图19:Resource Hacker FX资源修改器
Resource Tuner
Resource Tuner是一款杰出的资源修改器,是PE Explorer作者的又一力作。它包含了内置的脱壳工具,比如UPX和FSG的壳。资源的修改也可以通过友好的操作向导来完成。Resource Tuner具有内置的扫描工具,允许从目录中扫描任何指定类型的资源。
图20:Resource Tuner资源修改器
Dependency Walker*
它是一款可以扫描所有32位、64位Windows模块的工具,包括exe, dll, ocx, sys等,并能建立起树形图依赖关系以直观查看。对于每一个模块,他都会列举出该模块中全部的导出函数,而这些导出函数可能会在其他模块中被调用。
Dependency Walker对于排除与加载执行模块相关的系统错误也非常有用。它能够检测出许多常见应用程序错误比如模块丢失、非法模块、导入导出表不匹配等等。
图21:Dependency Walker模块分析界面
类别6:编辑器和支持工具
逆向工程中经常需要为了某个特殊的目的而制定专门的工具,除了标配的反汇编、反编译、调试器等之外,还有许许多多帮助我们分析软件的专门的工具,下面就能看到几款介绍。
PE-Bear
PE-Bear主要包括极佳的浏览界面和文件结构编辑器,内置的简单反汇编器,基于所有结构(可谓是全世界独一无二的解决方案)的PE文件对比,对流行的exe加壳工具/exe保护工具的检测,十六进制编辑和区块结构的可视化图形界面。
图22:PE-Bear编辑器
PeStudio
PeStudio是一个有趣的工具,除了能够展示基本的exe文件信息之外还有一系列可以检测出exe中错误元素(各种异常)的规则,可以潜在地表明该文件是否已经被感染。这对于那些成天接触PE文件的人来说是一个非常有用的工具。
图23:PeStudio可执行文件分析工具
dirtyJOE
主要针对编译过的Java文件。它是一个相当高级的编辑器,是来自波兰的独一无二的工具,可以通过内置的反汇编器和反编译器来修改代码。该程序还允许修改所有已编译过的*.class文件结构。在想要修改受保护的Java代码(已经过Java混淆器的处理)时dirtyJOE就体现出了它的不凡之处,传统的反编译、修改、和重编译方法都已失效的情况下,它证明了什么叫做无可替代。
图24:dirtyJOE Java文件编辑器
PEiD*
一款流行的检测加壳、加密方式和编译器类型的工具。体积小巧,分析速度快。提供了多种扫描方式,支持插件扩展功能。能够查看内存中进程调用的模块,还可以查看具体的PE文件格式。
尽管作者已经很久没有更新过了,但是它仍然是当今十分流行的一个查壳查编译器的分析利器。
图25:PEiD查壳分析器
PEView*
PEView提供了一个直观而又简便的查看PE文件的方式,同时它也支持COFF(Component Object File Format)文件。它能够具体地展示出PE头、区块、目录 、导入表、导出表,以及包含在EXE, DLL, OBJ, LIB, DBG等文件格式中的资源信息。
图26:PEView PE文件格式查看器
类别7:提取器和分离器
应用程序文件就像应用程序软件包一样可以包含额外的信息,像是隐藏的图标、声音文件、库文件等等。如果我们想要快速查阅应用程序或者它的安装包里面包含了什么内容,我们就必须使用一款合适的提取器或者叫分离器。
Universal Extractor
该软件允许从压缩文件、自解压压缩文件和安装包里面提取有用的文件。当我们想要知道安装包里究竟藏了些什么东西而又不想运行安装程序的时候它确实十分有效,其中安装包内经常会包含一些额外的安装脚本或者辅助库。
图27:Universal Extractor
MultiExtractor
能够提取所有类型的多媒体文件,像是图形文件、图标、声音文件、视频、3D模型、Flash动画等。当我们想要快速查看程序中包含了什么文件时,内存进程的动态数据解压和简单的查看器是这款软件的乐趣所在。
图28:MultiExtractor界面
类别8:虚拟环境
分析未知软件的行为是很危险的,尤其是不得不运行程序的时候。可能我们只是仅仅用调试器打开了它,它却默默地在后台新建了一个线程安装了rootkit或者其他恶意软件。所以应该在一个虚拟机中运行可疑的程序来保护我们免受危害。
VMware
最著名的虚拟机软件。我们可以在任何操作系统下安装运行来避免不必要的风险。
图29:VMware Workstation虚拟环境
Sandboxie
这款软件能够为应用程序创建虚拟沙箱环境并在其中运行。所有在沙箱中的操作都是和主机系统隔离的,不会给它带来任何影响。用它来调试软件或快速测试软件的正确性是一个非常好的选择,而无需担心其副作用。
图30:Sandboxie虚拟沙箱
Parallels Desktop *
Parallels字面意思是“平行”,意指操作间的无缝切换,让使用者感觉虚拟机与宿主机是平行工作而非依存关系。尽管这篇文章介绍的全部都是以Windows平台为主的逆向软件(跨平台的如IDA、PE-Bear也算在其列),但仍有必要提一提这款为Mac用户提供无缝衔接操作的Windows虚拟机平台。
它最大的优势就是宿主化模式(unity mode),这点VMware在OSX上做的远远不如Windows好,你可以像打开Mac软件一样打开Windows软件,而不需要在虚拟机和宿主机之间来回切换。而且Parallels的硬件支持和性能功耗也比VMware Fusion和Virtual Box来的小。考虑到Mac的便携性和续航能力,这无疑为Mac平台的逆向分析人员提供了一个很好的选择。
图31:在Mac上用Parallels Desktop运行Windows
这里并不是结束,这里才刚刚开始…
以上所介绍的工具只是应用市场上的一部分而已,还有许多其他免费的或者实验项目以及可能在某个时刻就会被遗弃的、但仍然值得一试的软件。我非常鼓励大家勇于发掘逆向工程的奥秘
上一篇: 如何有效利用今日头条的大流量?
下一篇: 影响谷歌搜索引擎排名的因素调查(完整版)
推荐阅读
-
php程序员在mac下开发常用的工具有那些?
-
windows下怎么安装node版本管理工具(nvm),怎么避坑?
-
Ubuntu下MySQL及工具安装配置详解
-
Java单例模式下的MongoDB数据库操作工具类
-
iOS逆向工程使用dumpdecrypted工具给App脱壳
-
Java单例模式下的MongoDB数据库操作工具类
-
iOS逆向工程使用dumpdecrypted工具给App脱壳
-
python在Windows下安装setuptools(easy_install工具)步骤详解
-
Win7系统下adb.exe工具包启动不了的解决方法
-
python在Windows下安装setuptools(easy_install工具)步骤详解