使用ssdeep工具来计算文件的模糊哈希值或分段哈希值,或者编写Python程序调用ssdeep提供的API函数来计算文件的模糊哈希值,模糊哈希值可以用来比较两个文件的相似百分比。这个工具在Windows平台安装比较麻烦,建议使用Linux操作系统,以Ubuntu为例,执行命令sudo BUILD_LIB=1 pip3 install ssdeep即可安装ssdeep和所有依赖包,当然在这之前或许还需要使用sudo apt-get install python3-pip命令先安装pip3工具。
>>> import ssdeep
>>> hash1 = ssdeep.hash('Also called fuzzy hashes, Ctph can match inputs that have homologies.')
>>> hash1
'3:AXGBicFlgVNhBGcL6wCrFQEv:AXGHsNhxLsr2C'
>>> hash2 = ssdeep.hash('Also called fuzzy hashes, CTPH can match inputs that have homologies.')
>>> hash2
'3:AXGBicFlIHBGcL6wCrFQEv:AXGH6xLsr2C'
>>> ssdeep.compare(hash1, hash2) #比较两个哈希值的相似度
22
>>> import ssdeep
>>> s = ssdeep()
>>> s.hash_from_file(filename)
对于某些恶意软件来说,可能会对自身进行加壳或加密,真正运行时再进行脱壳或解密,这样一来,会使得磁盘文件的哈希值和内存中脱壳或解密后进程的哈希值相差很大。因此,根据磁盘文件和其相应的进程之间模糊哈希值的相似度可以判断该文件是否包含自修改代码,并以此来判断其为恶意软件的可能性。