我们经常听到有人说“我中毒啦”、“我的文件被感染”啦。而且很多时候人们会发现,病毒被查杀的同时,自己的文件也被破坏了,这一切其实都是和病毒的捆绑技术有关。
今天就各种捆绑器的原理和检测方法做个简单的总结,以帮助各位识别带毒程序。
一、传统的捆绑器
这种原理很简单,也是目前用的最多的一种。就是将b.exe附加到a.exe的末尾。这样当a.exe被执行的时候,b.exe也跟着执行了。这种捆绑器的代码是满网都是。
检测方法:稍微懂一点pe知识的人都应该知道。一个完整有效的pe/exe文件,他的里面都包含了几个绝对固定的特点(不管是否加壳)。一是文件以mz开头,跟着dos头后面的pe头以pe 开头。有了这两个特点,检测就变得很简单了。只需利用ultraedit一类工具打开目标文件搜索关键字mz或者pe。如果找到两个或者两个以上。则说明这个文件一定是被捆绑了。不过值得注意的是,一些生成器也是利用了这个原理,将木马附加到生成器末尾,用户选择生成的时候读出来。另外网上流行的多款“捆绑文件检测工具”都是文件读出来,然后检索关键字mz或者pe。
说到这里,相信大家有了一个大概的了解。那就是所谓的“捆绑文件检测工具”是完全靠不住的一样东西。
二、资源包裹捆绑器
就这原理也很简单。大部分检测器是检测不出来的,。但一般人都会加壳,所以也十分不可靠。这个学过编程或者了解pe结构的人都应该知道。资源是exe中的一个特殊的区段。可以用来包含exe需要/不需要用到的任何一切东西。那捆绑器是如何利用这一点的呢?这只需要用到beginupdateresource、updateresource和endupdateresource这三个api函数就可以搞定。这三个api函数是用来做资源更新/替换用的。作者只需先写一个包裹捆绑文件的头文件header.exe.头文件中只需一段释放资源的代码。而捆绑器用的时候先将头文件释放出来,然后用上面说的三个api函数将待捆绑的文件更新到这个头文件中即完成了捆绑。类似原理被广泛运用到木马生成器上。
检测方法:一般这种很难检测。如果你不怕麻烦,可以先将目标文件进行脱壳。推荐有条件的朋友使用虚拟机。
三、编译器捆绑法
暂时不知用什么名字来形容,所以只能用这个来代替。这种方法相当的阴险。是将要捆绑的文件转换成16进制保存到一个数组中然后用时再用api函数createfile和writefile便可将文件还原到硬盘。这里稍稍学过编程的都知道。代码中的数组经过编译器、连接器这么一搞。连影都没了。哪还能有什么文件是吧?
补充:可以利用一些工具将硬盘和注册表监视起来以后再运行那些你不确定是否被捆绑的程序。
网友评论