0

我正在用 C# 编写一个相当大的项目。这是一种游戏守卫系统,可以防止玩家在多个层面作弊,包括本地隧道和具有多种算法的高级网络加密。

问题是关于 Console.WriteLine 方法。我在我的程序中经常使用它,因为在没有正确输出的情况下很难跟踪多个线程的进度。有什么办法,人们可以在运行时捕获这个输出?它包含一些敏感信息。该应用程序是在发布模式下构建的,稍后会被混淆(构建后脚本)。

我应该使用 Debug.WriteLine 方法吗?保护应用程序免受逆向工程是我的首要任务。我读到,在发布模式下,Debug 的方法甚至没有编译成代码。另一方面,Console.WriteLine 有一些很酷的重载。有什么方法可以保留 Console 方法并保护它免受未经授权的访问?

4

3 回答 3

2

如果您在发布版本中根本不需要控制台输出,则 Debug 类中的所有成员都带有标记,ConditionalAttribute这意味着它不会包含在发布版本中。所以是的,只要Debug.WriteLine你想要的话就使用它。

于 2013-06-28T19:54:27.077 回答
1

使用带有条件编译的NLog之类的东西,这样它就不会包含在发布版本中。然后,您可以在调试时跟踪日志并获得相同的信息,而不会泄露给用户。

或者,如果您更喜欢使用 Console.WriteLine,只需使用条件编译包装对它的调用,如下所示:

#if DEBUG
    Console.WriteLine("Debug version");
#endif
于 2013-06-28T19:51:53.413 回答
1

与 Debug 类方法一样,您可以编写编译器忽略除 DEBUG 构建之外的调用的方法。他们只需要返回void,因此省略调用不会产生任何影响。请参阅ConditionalAttribute。与条件编译相比,优势在于您不需要在代码中乱扔条件指令。

如果您喜欢 Console 方法,您可以将它们包装在您自己的类中。

于 2013-06-28T19:54:52.347 回答