混淆器和技术支持
回答
您将得到混淆堆栈跟踪。但混淆器可以生成将混淆名称映射到真实名称的映射文件。您必须将这些映射文件保存在安全的地方,并且可以在需要时使用它们再次“消除混淆”堆栈跟踪。
在技术支持的情况下 - 您可以创建一个简单的Web界面,其中技术支持人员可以粘贴堆栈跟踪。这种方式只有Web服务器需要访问映射文件,因此它可以恢复原始堆栈跟踪。
这里有两个链接解释与Dotfuscator的模糊处理过程:
http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/The_Map_File.html
如果堆栈中的方法在您的版本中被混淆,您将在任何堆栈跟踪中获得混淆的方法名称。
如果您在代码中添加了任何内容以帮助您找出涉及的方法,潜在的黑客可以使用该信息来更好地理解您的代码。
一个常见的策略是只对一些代码进行混淆,包括(但不限于)执行许可检查的部分。如果您仅对许可证进行混淆检查,那么需要黑客注意的部分很容易归零。
我想知道如果公司可以隐瞒混淆源代码,他们可以在内部使用以得到错误发生的真实地点的混淆日志。 –
查看日产粉丝的评论。你的工具应该能够去混淆堆栈跟踪...如果你把它作为一个正确编码的文件。许多混淆器使用Unicode字符来表示类和方法名称,这使得在屏幕上阅读特别困难。只给出屏幕截图或非Unicode文本文件,将很难返回。我有时会创建一个Web服务来记录错误,以确保程序提交我需要诊断错误的所有内容。这将是一个安全的方法来获得正确的(unicode)编码的堆栈跟踪。 –
这通常不是一个问题,因为大多数模糊处理提供反混淆堆栈追溯能力的原始痕迹。
我们使用BitHelmet。问题是,当使用最强的混淆技术时,堆栈跟踪不能被反混淆。 BitHelmet使用完全签名重命名(某种过载感应,只是更好)。会发生什么情况是,许多方法以相同的名称结束,但具有不同的返回类型(这不能在C#中完成,但对于CLR可以)。返回类型不会显示在堆栈轨迹中!所以实际上不可能使用最强的混淆消除堆栈跟踪。
我们问了与你相同的问题,我们讨论了它,并得出结论,实际上我们更喜欢更好的混淆。当提供技术支持作为其他一些只有最终用户可以提供的数据时,堆栈跟踪实际上并不是那么有用。 “请告诉我你到底在做什么?” :)
- 1. jQuery OOP技术混淆
- 2. XmlSerializer混淆支持?
- 3. 技术支持票程序
- 4. django时区支持混淆
- 5. 支持maven插件的java混淆器
- 6. 混淆术语
- 7. 支持RIA/Web 2.0技术的框架
- 8. 如何从Microsoft获得技术支持
- 9. MassTranist ESB支持其他技术
- 10. OpenBSD 5.6支持PAM技术吗?
- 11. 需要技术支持:SNMP trap sender(SNMPv3)
- 12. iOS6自动混淆并支持iOS5
- 13. 混帐:不同分支的创建和合并技术
- 14. 持久性和瞬时对象 - 混淆术语
- 15. JavaScript与术语混淆?
- 16. 泊坞窗混淆术语
- 17. C#枚举术语混淆
- 18. 算术运算符混淆
- 19. 支持flash/flex共享对象和散列技术
- 20. 支持变量重命名的Java解混淆器?
- 21. 带有模块化构建支持的JS混淆器
- 22. SVN分支和子分岔技术
- 23. 追逐支付技术和EUDD
- 24. 混淆git分支和主交互
- 25. PHP混淆器?
- 26. 如果处理器不支持虚拟化技术的替代Android模拟器
- 27. 混淆和jOOQ
- 28. 混淆和SHA?
- 29. 混淆和GPL
- 30. 使用指针算术混淆
如上所述,大多数工具都可以使用去模糊堆栈跟踪(例如http://www.ssware.com/cryptoobfuscator/obfuscator-net。htm) –
我有时会创建一个Web服务来接收崩溃报告。用户可以提交“提交错误报告”按钮,并且可以传输堆栈跟踪和其他有关程序状态的有用信息,而不会有堆栈跟踪以错误的文本格式编码的风险(因为许多混淆器使用Unicode字符作为类/方法名)。 –