书中的例子 https://practicalmalwareanalysis.com/
https://github.com/mikesiko/PracticalMalwareAnalysis-Labs
fakenet模拟网络的工具 https://sourceforge.net/projects/fakenet/
1 使用反病毒引擎扫描
- VirusTotal https://www.virustotal.com/gui/
- VirScan https://www.virscan.org/language/zh-cn/
2 哈希值
winMD5.exe
计算文件的md5值,在线搜索
3 查找字符串
Strings.exe 下载页面 https://docs.microsoft.com/zh-cn/sysinternals/downloads/strings
下载后解压,将exe放在C:\windows\system32下即可
Strings可查看PE文件中字符串,有助于推断出恶意代码的用途
4 加壳和混淆
加壳后的恶意程序打印的字符串很少
注意:加壳的恶意代码至少会包含LoadLibary 和 GetProcAddress两个API函数 ,它们用来加载和使用其它函数功能
4.1 文件加壳
![](http://upload-images.jianshu.io/upload_images/20766503-3fcf6e7de4f950bc.png)
4.2 PEiD检测加壳
UPX加壳工具 官网https://upx.github.io/
脱壳
upx.exe -d pefile
5 PE文件格式
PE portable File Format(可移植文件) dll exe
6 链接库和函数
PE文件的导入表 其它文件的函数 链接在主函数中
6.1 链接分类
- 静态链接: 将库中的代码复制到可执行代码中
- 运行时链接:在程序运行中,需要时链接相应的库
通常会使用LoadLibrary和GetProcAddress两个函数,可访问系统中任意库中的任意函数 恶意代码常用 - 动态连接: 在程序被装载入内存时,链接相应的库,windows下最常用
PE头中的导入表中存储有引用的库和函数信息
6.2 动态链接库
Dependency Walker http://www.dependencywalker.com/
![](http://upload-images.jianshu.io/upload_images/20766503-711dcaff8e9259c0.png)
windows API的命令规范
A ansi版本的api
W unicode版本的api
Ex 后面扩展的api
如MessageBoxW MessageBoxA CreateWindowEx
6.3 导入函数
PE头中包含文件使用的特定函数相关信息
6.4 导出函数
用来提供给其它程序使用的函数信息
7 静态分析技术实践
8 PE文件头
![](http://upload-images.jianshu.io/upload_images/20766503-540106e41322db6b.png)
使用python 解析PE文件, https://blog.csdn.net/bagboy_taobao_com/article/details/14168597
#-*- coding:utf-8 -*-
import pefile,sys
#输出文件的PE头部信息
print(pefile.PE(sys.argv[1]))
![](http://upload-images.jianshu.io/upload_images/20766503-127734cc87905c40.png)
PE文件格式可参考这个 https://www.cnblogs.com/2f28/p/9800992.html
8.2 使用resourcehacker工具查看资源节
8.3 其它的PE工具
PEBrowse Pro
PE Explorer
8.4 PE文件头
![](http://upload-images.jianshu.io/upload_images/20766503-c0e9e8748add7c4a.png)