目前我有点陷入尝试使用visual studio编译机器人。由于机器人不能再使用,我以为我能够重新使用它。所以我在可执行文件上使用了dotpeek,并尝试测试它是否会再次编译。到目前为止,没有错误,但时间的错误。我想假设我没有正确的源文件,但即使Visual Studio和dotpeek同步使用符号,错误仍然会发生。
public static List<string> DecryptLicense(string path, string key)
{
string s1 = File.ReadAllText(path);
while (s1.Length % 4 != 0)
s1 += "=";
string str1 = Decrypter.Decrypt(Encoding.UTF8.GetString(Convert.FromBase64String(s1)).Caesar((short) -8), key);
string s2 = str1.Substring(0, 15);
string str2 = str1.Substring(15);
string format = "yyyyMMdd-HHmmss";
// ISSUE: variable of the null type
__Null local = null;
DateTime exact = DateTime.ParseExact(s2, format, (IFormatProvider) local);
if (Global.GetNistTime() > exact)
{
Console.WriteLine("License expired (" + exact.ToString("yyyy-MM-dd HH:mm:ss UTC+0") + "). Press one key to exit.");
Console.ReadLine();
Environment.Exit(0);
}
List<string> stringList = new List<string>();
while (str2 != "")
{
string str3 = str2.Substring(0, 40);
str2 = str2.Substring(40);
stringList.Add(str3);
}
return stringList;
}
我尝试将__Null更改为var,但我相信当尝试使用IFormatProvider进行更改时,这是一个格式化问题。任何有关如何解决这个问题的见解表示赞赏。
以下是发生错误以供参考的其他部分的实例:
public static string SleepTime
{
get
{
return Global._sleepTime;
}
set
{
Global._sleepTime = value;
string[] strArray = value.Split(' ');
for (int index = 0; index < strArray.Length; ++index)
{
string s1 = strArray[index].Split('-')[0];
string s2 = strArray[index].Split('-')[1];
DateTime exact1 = DateTime.ParseExact(s1, "HH:mm", (IFormatProvider) null);
string format = "HH:mm";
__Null local = null;
DateTime exact2 = DateTime.ParseExact(s2, format, (IFormatProvider) local);
Global.SleepTimes.Add(new DateTime[2]
{
exact1,
exact2
});
}
}
}
答案 0 :(得分:2)
完全删除local
的声明。它从来没有用过任何东西,所以花时间确定它的类型是浪费。
__Null
类型可能只是为了模糊代码而插入,并阻碍了对代码进行反编译的任何尝试。
将local
的所有实例替换为null
,如:
DateTime.ParseExact(s1, "HH:mm", (IFormatProvider) local);
↓ ↓
DateTime.ParseExact(s1, "HH:mm", (IFormatProvider) null);