2017-10-19 78 views
0

我需要維護一個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或鍵入。模糊處理工具應該有一種方法來從重命名中排除代碼元素。 (爲了公開起見,我在一家創建此類工具的公司工作,但此建議也適用於其他工具。) –

回答

0

我已經刪除了預生成事件,該事件運行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()); 

現在我有一個可執行文件,我終於可以混淆。 如果您打算使用上面的代碼,請仔細檢查您是否關閉了您打開的文件。