无法理解main.ndb(clamav官方16进制特征码库)中的内存偏移含义,希望有懂行人解释。
我正在使用的数据库:https://wws.lanzoub.com/iSvXz0a1bcoj
我试图将clamav中的main.ndb(十六进制恶意软件特征码)取出并用于我的程序中,但是在使用中,我发现了这样一些问题:
Win.Trojan.Crypted-30:1:EP+0,5:9060909090
Win.Downloader.Small-2870:1:S1+4267:十六进制码(过长)
并且,"+"后面的数字表示什么,我无法理解。因为我试图从文件的全部十六进制码中进行匹配(使用python,因此,在匹配大文件时性能十分差),生成了一个Metasploit Meterpreter的有效载荷并进行检测,我得到了Win.Trojan.Crypted-30的结果。我不清楚这是否正确,但我确实在文件中找到了此特征码(9060909090,WinHex Hex 查找与程序查找)。它的位置在572B,距离入口点1000(.text段内存开始地址)相差了许多。我无法理解"EP+0,5"在告诉我应该在哪里查找此特征。
3. 在检查特征时,我设置了快速查找选项与常规查找选项。目前的情况下,快速查找我会在.text段中匹配特征码,而常规查找我正在以从全文中检索特征来代替。原因如上。但是python对于大文件的处理并不是很迅速。在我使用了多进程(由于GIL,多线程反而会降低查找速度)后,我不得不使用文件来交换主进程与子进程的数据,因为我无法调试好Process的Manager传参,它不是无法拿到数据并抛出异常,就是修改数据后没有在主进程生效,希望大家可以为我指点。
4. 在性能方面,我观察到了很可怕的现象。
第一个问题我试图优化,但是提升不大,我不太懂算法。
第二个问题我由于缺少相关文档与样本,无法实践获得信息。
第三个问题由于网上的教程太鱼龙混杂,不利于短时间内学习。
第四个问题我也许可以解决内存占用,但是硬盘问题我无法改善。因为你知道我不可能在使用时临时分析PE文件(我使用pefile库来分析pe文件,并自行造函数解析16进制文本。遭遇稍大的文件,就需要等候许久。所以我认为将信息提前获取是最好的办法) 希望有人给予指点,也许是我的认知太浅了一些。
如上。
有点复杂能简述吗