Vb.net 如何在模糊的.NET代码中获取错误行号?
使用此代码:Vb.net 如何在模糊的.NET代码中获取错误行号?,vb.net,eazfuscator,Vb.net,Eazfuscator,使用此代码: Dim sf As New StackFrame(0, True) MessageBox.Show("Module: " & sf.GetFileName & " -Line: " & sf.GetFileLineNumber.ToString) 我可以获取发生未处理异常的类和行号(在ApplicationEvents.vb中,Sub-MyApplication\u UnhandledException(…)处理我。UnhandledException
Dim sf As New StackFrame(0, True)
MessageBox.Show("Module: " & sf.GetFileName & " -Line: " & sf.GetFileLineNumber.ToString)
我可以获取发生未处理异常的类和行号(在ApplicationEvents.vb中,Sub-MyApplication\u UnhandledException(…)处理我。UnhandledException
)
但如果我使用eazfouscator(可能还有其他任何工具)混淆代码,我就会丢失数据:我得到一个空字符串,行号为0
插入代码:
<Assembly: Obfuscation(Feature:="encrypt symbol names with password XXXX", Exclude:=False)>
没有什么变化。我可以反编译电子邮件,但是行丢失了。如何获取模糊代码中的错误行?不,这是不可能的,这是有意的。未处理的异常是潜在攻击者的信息源。通常,只有在第一轮测试通过后,才应该对生产构建应用模糊处理。不要试图调试一个模糊的程序集,它的模糊化特别是为了防止调试,等等
我应该补充一点,您无法获取信息的真正原因是调试符号已通过模糊处理从程序集中剥离。只要您的程序集具有有效的PDB文件,就应该显示该信息。您可以在堆栈跟踪中获取行号。它们存储在
.pdb
文件中。默认情况下,eazfouscator.NET通过使.pdb
文件基本为空来清理这些文件。这就是为什么您看不到模糊程序集的行号
但您可以指示eazfouscator.NET处理.pdb
文件,以便保留行号:
<Assembly: Obfuscation(Feature:="debug [relative_file_paths secure]", Exclude:=False)>
指令就位后,您将在模糊程序集的堆栈跟踪中看到行。由于使用了secure
标志,.pdb
文件保持加密状态,因此不会造成安全风险