【发布时间】:2012-02-27 22:53:58
【问题描述】:
我正在编写一个程序,它读取“.exe”文件并将它们的十六进制值存储在一个字节数组中,以便与包含一系列值的数组进行比较。 (就像一个非常简单的病毒扫描程序)
byte[] buffer = File.ReadAllBytes(currentDirectoryContents[j]);
然后我使用 BitConverter 创建了这些值的单个字符串
string hex = BitConverter.ToString(buffer);
下一步是在此字符串中搜索一系列值(定义)并返回正数以进行匹配。这是我遇到问题的地方。我的定义是十六进制值,但在记事本中创建并保存为 defintions.xyz
string[] definitions = File.ReadAllLines(@"C:\definitions.xyz");
我一直在尝试将它们读入字符串数组,并将数组的定义元素与字符串 hex 进行比较
bool[] test = new bool[currentDirectoryContents.Length];
test[j] = hex.Contains(definitions[i]);
这是作业中的一部分,这就是为什么我没有发布我的整个程序代码的原因。上周五之前我没有使用过 C#,所以现在很可能会犯一些愚蠢的错误。
任何建议都非常感谢:)
【问题讨论】:
-
您能否发布您的定义文件的内容或部分内容。
-
究竟是什么问题?
-
您的问题是什么?另一件重要的事情:将字节数组转换为字符串以进行进一步的十六进制比较确实无效。您应该将字节与字节进行比较,并且不在此处使用字符串。
-
你对你正在尝试的事情给出了一个合理的概述......但是:不清楚你在哪里卡住了。怎么了?或没有发生? (我个人同意 ken2k 我不会在这里使用十六进制字符串......但是:这是一个实现细节)
-
Myles:定义文件包含一个我编写的十六进制字符串,因为要扫描的 .exe 文件不是真正的 .exe,而是我以 exe 扩展名保存的记事本文件。
标签: c# executable definitions