如何混淆由xsltc生成的dll

问题描述:

我需要维护一个xslt代码,其中包含数以十万计的行。 它是很早以前开发的,它通过运行xsltc作为预生成事件来创建dll,并且该dll最终由visual studio项目引用,从而集成到Visual Studio控制台应用程序中。如何混淆由xsltc生成的dll

为了销售最终的可执行文件,我需要混淆整个解决方案。 我一直用来混淆的工具可以正确地为visual studio创建的所有可执行文件和dll文件正常工作,但是如果我混淆了我的xslt dll,那么我的代码会抛出一个运行时错误,说它找不到我的xslt dll。

我想知道,如果您已经使用xslt dlls开发过项目,那么您是如何设法维护这些dll的安全版本的?

+0

obfuscated!=安全 – Pawel

+0

我同意你的意见。你有什么建议如何解决这个问题? – Diego

+1

很难提供具体的建议,但没有关于场景,工具等的大量信息,但可能的原因是您的代码尝试加载XSLT DLL或其中的类型,并且混淆正在重命名该DLL或键入。模糊处理工具应该有一种方法来从重命名中排除代码元素。 (为了公开起见,我在一家创建此类工具的公司工作,但此建议也适用于其他工具。) –

我已经删除了预生成事件,该事件运行xsltc并将输入样式表用作未复制到输出目录的嵌入式资源。 由于样式表不会被复制到输出目录了,我改变了代码加载了一下:

XsltSettings settings = new XsltSettings(true, true); 
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("namespace.stylesheetname.xslt"); 
XmlReader embeddedReader = XmlReader.Create(stream); 
XslCompiledTransform xslt = new XslCompiledTransform(); 
xslt.Load(embeddedReader, settings, new XmlUrlResolver()); 

现在我有一个可执行文件,我终于可以混淆。 如果您打算使用上面的代码,请仔细检查您是否关闭了您打开的文件。