有没有一种方法可以反混淆已经被我混淆的GWT JavaScript代码?

3

我希望能够在生产环境中解码出现的错误堆栈跟踪。


可能是为什么Tomcat无法显示实际堆栈跟踪?的重复问题。 - Chris Lercher
远程日志记录确实是我所需要的。唯一的小缺点可能是我的应用程序可以是一个离线运行的Chrome扩展。此外,远程日志记录可能会违反不跟踪政策,并且一些用户可能不喜欢它。谢谢。 - honzajde
我认为堆栈跟踪(与为用户设计的错误消息相反)在用户将其发送给您之前并不是非常有用。为此,他们可能需要上网。他们可以从对话框中发送跟踪,甚至可以将其粘贴到电子邮件中 - 您所需的只是(混淆的)堆栈跟踪+排列强名称。然后,您可以在服务器上重新符号化它(只需通过RemoteLoggingServiceImpl的代码进行一些挖掘,您就应该能够编写一个小工具来为您完成此操作)。 - Chris Lercher
2个回答

3

1

你需要使用JsEmulateStackTrace类。它似乎非常复杂,我自己从未完全实现过。

http://code.google.com/p/google-web-toolkit/wiki/WebModeExceptions

这个假设性地为您重新映射符号映射,但老实说,我怀疑它是否完全有效,因为我还没有看到一个库/模块能够为GWT提供适当的堆栈跟踪。所以这告诉我它可能很难或者不完全工作。

老实说,最好创建一些代码在编译时注入,以提供堆栈跟踪支持,这样可以生成自己的堆栈跟踪,而不是使用实际的Java脚本堆栈跟踪。例如,您可以为所有编译的类创建一个单一的基类,带有注释或其他内容。然后让您的构建脚本在预编译时扩展所有类,使它们对开发人员透明,但包含在编译缓存文件中。您的基类可以获取类名和/或方法名等信息,并使用简单的堆栈进行管理。


我认为这让我接近了,该文档指向Resymbolization_/_Deobfuscation。我也考虑将堆栈跟踪传递给gwt-logging进行反混淆(因为我不想使用远程日志记录)。太好了! - honzajde
gwt-logging 可能还提供一些自动混淆/反混淆的功能,这也值得一看。另一种方法可能是包含源代码的副本并从中查询类和行,但老实说,我认为更容易弄清楚 webmodeexceptions。 - 1-14x0r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接