调试混淆代码

时间:2012-12-29 11:42:08

标签: c# debugging obfuscation

我有一个使用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)

它明确指出错误是在后台工作程序中引起的。由于它是一个小应用程序,我感觉我知道在哪里,但这只是因为它是一个小应用程序。

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

有没有办法让这个调试更容易,同时还有模糊的代码?

2 个答案:

答案 0 :(得分:3)

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

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

2)此外,如果用户允许您访问环境,您可以暂时重新安装具有未经模糊处理的应用程序(或更改特定的DLL)。调试完成后 - 只需还原已更改的DLL。

答案 1 :(得分:0)

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