最复杂的机制往往就在最简单的现象中,我们知道Windows中大部分可执行文件都是以.bat、.exe、.com、.scr等后缀命名的,正是因为此,很多人习惯性的认为,Windows可执行文件都是以这些后缀名命名的,这种习惯有点想当然的感觉。事实上Windows只有一种可执行文件格式——PE(portable executable),只所以有上面的习惯,是因为Windows的GUI界面中为了方便用户操作,将一些后缀名与相应的程序进行了关联。既然Windows能关联,为什么我们不能手动的进行关联设置。
一、熟悉文件关联操作
文件关联的数据保存于注册表中,在“开始”——“运行”中输入reedit打开“注册表编辑器”在HEY_CLASSS_ROOT根键下即能看到这些关联。当然一般情况下,我们习惯在cmd中进行文件关联的查询和操作,运行cmd,输入:assoc命令即可查看到Windows中的文件关联。
用assoc命令和使用注册表编辑器,看到的内容是一致的,要查看某一个特定后缀的文件关联,比如查询看.exe的文件关联,可以执行:assoc.exe。对文件关联的操作在很多时候是很有用的,因为不同的格式有不同的运行方式,比如exe文件,在编程时可以直接调用system()、WinExec()、ShellExecuteEx()等函数直接运行,而对于同样是PE格式的屏幕保护程序(.scr)则需要在调用上面的函数时加上/S参数,为什么要加参数呢?首先在cmd中执行:assoc .scr,会得到.scr后缀名关联的是scrfile,继续执行ftype scrfile,你会发现它的执行格式中必须有一个/S参数而exe文件却没有。
assoc、pe命令和其它cmd命令一样,可以通过“/?”参数来查询其帮助信息(不熟悉的朋友可以阅读一下它的帮助信息)。要修改文件关联,即可以通过“注册表编辑器”来完成,也可以通过cmd中的命令来完成。
二、修改exe文件关联防止运行恶意程序
在说这个话题之前,先来解答第一个问题。为什么修改exe文件关联,让exe换个“活法”,可以防止运行恶意程序。
程序是静态的存储在硬盘上的数据,CPU要执行指令必须得先将硬盘上的数据读入到内存中,在Windows中这个过程称为PE加载,具体的细节暂时不用了解,但是需要明确一点,程序必须在内存中才可以执行,因此对于捆绑程序(永远不会过时的欺骗电脑白痴的木马传播手段)要运行其中的捆绑数据必须先释放到硬盘,然后再创建进程,当然有一种例外(这种例外是一般小牛、中牛作不到的、大牛是不会搞这种玩意的,所以尽管放心使用本文所用的小伎俩)——就是编写一个类似于Windows PE加载器的程序,在捆绑程序运行时,直接在内存中执行捆绑的程序。
很多人喜欢在文件名后缀上“忽悠电脑小朋友”,比如前段时间的Unicode控制字符文件名欺骗,如果我们修改了exe文件的关联则很大程度上可以躲过这种欺骗手法。总的来说,修改exe文件关联(这里只是一个文件名后缀的例子)一方面可以四两搏千斤——躲过恶意程序,另一方面限于大部分牛人的能力,可以阻止运行恶意程序。
了解了原因,操作起来就比较简单了。具体的操作如下,步骤可能有些繁琐,注意区别命名的文件名即可(下面通过注册表编辑器进行操作)。
首先,将在“开始”——“运行”中输入regedit,运行注册表编辑器,将[HKEY_CLASSES_OOT]下的.exe和eefile导出合并为一个exe.reg文件,作为备份(正常状态下的注册表文件为exe.reg)!然后复制一份exe.reg,用记事本打开exe.reg,在“编辑”菜单中选择“替换”,将.exe替换为.test,将exefile替换为testfile,“文件”——“另存为”test.reg,如果我们将test.reg导入注册表,那么系统中的可执行文件格式将变为.test后缀的。
为了方便不断的切换文件关联,建立如下两个批处理文件,编辑如下批处理代码:
保存为test.bat,它的作用是使exe文件关联失效,而使.test做为可执行文件,然后再编写如下批处理代码!
保存为exe.bat,它的作用是使test文件关联失效,将可执行文件exe设置为可执行文件的文件关联!
四个文件写完后将其保存到c:\test(可以自定义目录)文件夹下,然后将test.bat和exe.bat分别创建快捷方式发送到桌面,在快捷方式上选择右键——“属性”,在“快捷键”中按“ctrl”分别输入t和e,这样我们只要按“ctrl+alt+t”或者“ctrl+alt+e”就可以进行文件关联更换了(这里可以根据需要进行设置,主要是为了方便文件关联的切换)。
当我们从网上下载了程序,直接CTRL+ATL+T执行后,系统.exe文件变为.test,我们将下载的程序重命名为xxx.test,然后执行程序,运行完成后需要时,再按CTRL+ALT+E改回原来的正常文件关联即可。
三、实例测试
吹嘘了许多理论,接下来作一个小测试,测试程序1.exe(用汇编写的hello world程序)
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。