本节帮助读者入门windows上如何对恶意软件或病毒作初步分析。分析分两种,一种叫静态分析,也就是经过直接读取病毒或恶意程序的可执行文件来分析它的运行原理,一种是动态分析,也就是在病毒或恶意程序正在运行的状况下,监视其一举一动,经过观察它在系统中的运行状况来分析它的目的和原理。ios
本节介绍基本的静态分析方法,该方法简单易行,但做用有限,要想跟病毒或恶意程序斗智斗勇最终还得依赖于动态分析。静态分析的第一种方法就是直线读取病毒或恶意程序的可执行文件,从中抽取关键信息。不少病毒或恶意程序的做者为了快速实现其非法目的,在代码设计时每每粗制滥造,不会关心软件工程方面的问题,例如他们会将服务器ip,URL等重要信息以字符串的方式写在代码里,所以直接读取其可执行文件就能获取这些信息,咱们看一个例子,使用VS编译以下一段很是简单的代码,而后生成exe可执行文件:git
#incolude<iostram>
const char* p = "This is a String";
int main() {
std::cout<<"Hello World!";
}
注意到程序里有两个字符串,它们会直接存储在编译好的可执行文件里,在恶意软件或病毒程序中,这些字符串每每对应服务器ip或某些关键信息,直接从可执行文件中抽取出这些信息后就能获得破解病毒和恶意代码的关键线索。使用windows系统提供的strings.exe程序能够直接读取给定文件中的ASCII字符串,假设上面代码编译后生成的可执行文件为StringExample.exe,那么能够执行以下命令:github
strings stringExample.exe
而后能够看到以下信息被输出:
注意看上图中选中部分对应的就是代码中的两个字符串。在win10上可能不附带strings.exe程序,读者能够搜索后在微软官网上直接下载。一般状况下病毒或恶意代码的做者不会蠢到这个程度,他们确定会想办法尽量隐藏本身,一般作法是对编译好的可执行文件进行打包或代码模糊处理,这样你就很难经过信息抽取或反编译的方式直接掌握其运行逻辑。windows
一种最经常使用的反查杀手段就是对可执行文件进行打包压缩,而后在打包后的文件上添加解包代码,在病毒或恶意软件运行时,它会先执行解包代码将被打包的病毒程序释放出来而后再运行,基本流程以下所示:api
一般用于打包可执行文件或代码的程序叫upx,能够经过搜索将upx.exe下载到windows系统上,而后执行以下命令:服务器
upx StringExample.exe
执行后会看到以下画面:
因为有矛就有盾,因而就有专门的工具能够用于查看文件是否被打包,最经常使用的就是PEid.exe,它也是windows上可执行程序,将其下载到系统上,而后运行并选中要查看的文件就能够判断其是否被打包过,使用过程以下:
从选中处能够看到,它显示出程序被upx打包过。静态分析技术还着重于查看可执行文件连接了哪些程序库,而且从中调用了那些函数。windows程序连接方式有静态和动态两种,静态方式就是经过直接将lib文件内的函数代码与可执行文件代码一块儿编译成可执行文件。动态方式就是代码在执行时,将DLL加载到内存中,而后调用其中的某些函数,若是咱们能读取代码调用了哪些函数就能够很好的判断其目的。微信
查看连接函数库最好的工具是Dependency walker,目前在win10上原来的walker已经没法运行,可使用以下连接下载可用的walker:https://github.com/lucasg/Dependencies
使用它打开一个可执行exe程序后就能够看到它运行时所依赖的连接库:网络
它的具体运用在后面进行动态分析时再进一步详解。这里先看个大概,从程序使用的连接库能够颇有效的把握病毒或恶意程序的目的。若是它加载了kernel32.dll,那么它有可能建立子进程或读取硬盘文件信息,由于该连接库提供了OpenProcess,CreateFile等接口。若是使用到User32.dll,那么它有可能建立了用户界面而且隐藏起来,同时要注意它是否从中加载SetWindowsEx这类函数,若是有那么它就会监听其余程序窗口对应的消息,例如监听键盘按键事件从而盗取用户的帐号密码。socket
若是加载了Advapi32.dll,那么它有可能操纵注册表,例如实现开机自动运行,若是它加载了WSock32.dll和Ws_32.dll,那么它就要调用socket功能实现网络数据发送,极有可能它会将用户电脑上收集的信息发送给远程服务器。大多数状况下,病毒或恶意代码的创做者会“加壳”,也就是经过前面的upx相似程序将代码打包压缩,这样就能防止别人经过walker这类软件抓取它的加载库从而防止病毒或恶意代码被查杀。函数
下一节咱们看看可执行exe文件的基本结构。
本文分享自微信公众号 - Coding迪斯尼(gh_c9f933e7765d)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。