1

我有一个应用程序被EazFuscator.NET. 但是,调试它是完全不可能的(即使它是一个小应用程序),例如,这是一个错误报告:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Stacktrace:
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at .(Object , RunWorkerCompletedEventArgs )
at System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
at System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)

它清楚地表明错误是在后台工作人员中引起的。由于它是一个小型应用程序,我感觉我知道在哪里,但这仅仅是因为它是一个小型应用程序。

我已经附加了用户的配置文件,并且有一个复选框可以在错误报告中包含屏幕截图。

有什么方法可以让我更轻松地进行调试,同时仍然有混淆的代码?

4

2 回答 2

3

我也有在小型混淆程序上调试客户问题的经验。我可以建议你两个选择:

1)为您的程序制作可配置的详细日志记录,客户端可以在设置中启用。您可以使用此日志记录收集大量信息(例如:每个重要方法的入口点以及传递给它的参数)。一般来说,在您的程序中拥有良好的日志记录可以大大节省调试客户端(而不仅仅是客户端)问题的时间。

2) 此外,如果用户允许您访问环境,您可以暂时使用未混淆的应用程序重新安装应用程序(或更改特定的 DLL)。调试完成后 - 只需恢复更改的 DLL。

于 2012-12-29T11:58:29.507 回答
2

大多数混淆器生成映射文件,显示原始类/方法名称与混淆的名称之间的映射。您应该将这些文件存储在每个版本的某个地方,或者......并使用它们来查找真正的堆栈跟踪。

于 2015-02-11T18:14:16.073 回答