gpt4 book ai didi

java - 使用 Java 扫描病毒签名

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:05 25 4
gpt4 key购买 nike

我需要在文件中搜索病毒签名,我正在使用 java 来执行此操作我已经编写了所有其他功能,例如收集文件并将它们过滤成需要搜索的文件等。我只需要一点帮助病毒签名端。

使用什么格式(散列字符串、二进制、字节)?

我应该使用什么方法来扫描字符串(搜索算法等)?

我正在考虑将文件转换为字节,然后使用 Boyer–Moore 字符串搜索算法来搜索字节。

我想使用签名文件中的病毒签名并为它们扫描文件。

 public void Search(File file) {

if (file.exists()) {

if (file.isDirectory()) {
if (file.canRead()) {

File[] listOfFiles = file.listFiles();
if (listOfFiles != null) {
for (int i = 0; i < listOfFiles.length; i++) {
Search(listOfFiles[i]);
}
}
} else {
cannotReadDirCount++;
}
} else if (file.isFile()) {

if (file.canRead()) {

totalFileCount++;

for (int a = 0; a < executableCriteriaList.size(); a++) {

if (file.getName().endsWith(executableCriteriaList.get(a).toLowerCase()) || file.getName().endsWith(executableCriteriaList.get(a).toUpperCase())) {

// scanExecutableFile(file); HERE IS where i need to scan the file
searchFiles.add(file);
}

}

} else {
cannotReadFileCount++;
}

}
} else {
cannotReadFileCount++;
}
}

感谢帮助

最佳答案

如果您只扫描一个病毒签名,那么像 Boyer-Moore 这样的单一字符串搜索算法将是一个不错的选择。 (还有其他快速的单一搜索算法。)

但病毒扫描程序通常会查找许多病毒签名,而这些签名通常不仅仅是简单的字节序列签名。

如果您正在寻找(技术上)最好的算法,那么我建议您阅读维基百科页面 String Search Algorithms ,并考虑它链接到的所有备选方案。这只是一个开始,因为(显然)还有其他未在此处列出的搜索算法。

至于签名的最佳表示,这将取决于您使用的搜索算法。但是由于您正在寻找代码对象中的字节模式,因此基于字节的表示(字节字符串或基于字节的模式/正则表达式)似乎最合适。

(我看不出散列实际上如何帮助您解决这个问题...)


但这假设您确实需要可用的最佳搜索技术。听起来这是你正在做的一项任务,为此你最初选择的 Boyer-Moore 很好。一种简单的方法是将每个文件读入内存,然后对每个病毒签名进行 Boyer-Moore 搜索。这不会像商业/专业病毒扫描程序那样快,但它应该足以满足您的目的。

关于java - 使用 Java 扫描病毒签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com