2014-09-29 88 views
0

我的代碼已經用\ u082代碼替換了具有Unicode符號的函數和變量名稱。當從DotPeek作爲項目導出時,這些不是符號,而是像「\ u082」這樣的字符串,從而阻止在Visual Studio 2013中進行編譯。如何解決此問題而無需手動爲所有內容命名一個名稱?模糊變量名稱

+2

不要把它看作是一個必須解決的問題。這種不便已經被有意識地實施,以防止你正在嘗試做什麼。 – stakx 2014-09-29 16:35:45

+0

問題是預防編譯。如果我能夠編譯它,它就足夠了。 – RomaValcer 2014-09-29 16:51:32

+1

@RomaValcer也許你沒反編譯好。 – 2014-09-29 17:03:41

回答

3

混淆的要點是原來的名字丟失了。你可以嘗試編寫一個程序來根據上下文編寫名字,但這將是一個相當具有挑戰性的嘗試。另外,大多數好的混淆器都會對代碼做其他事情,使其難以理解,甚至可能會引入運行時允許的構造,但是會導致崩潰較少的複雜的反編譯器。不過,真的,如果您有權使用源代碼,您應該有權訪問未混淆的副本...

+0

我的意思是,只是一些按鈕來重命名所有這些符號(自動)爲某些名稱,如變量pxx,函數fxx。 – RomaValcer 2014-09-29 16:50:57

+0

@RomaValcer,很可能有工具可以做到這一點,但我並不親自熟悉它們。自己編寫這樣的工具當然是可能的,但這並不是一件容易的工作,特別是如果你想處理其他混淆技巧,故意讓你的工作變得困難。也就是說,如果您有合法修改來源的權利,但沒有該來源的副本,則很不尋常。如果你處於這樣的位置(比如由於糟糕的代碼歸檔實踐而遺失了舊產品的來源),那麼我表示哀悼。 – 2014-09-29 18:42:23

0

您可能正在查看故意混淆的代碼,其所有者傾向於隱藏其業務邏輯/算法/安全等

我想不出一種簡單的方法來給代碼成員名稱一些有意義的身份,而不需要手動。

這是混淆處理的目標。

+0

這種晦澀難懂的代碼是不可編譯的。唯一需要的是讓它可編譯。 – RomaValcer 2014-09-29 16:58:21

+0

所以要求源代碼.. – 2014-09-29 16:59:17

+0

是的...顯然,它不是如何工作。 – RomaValcer 2014-09-29 17:18:35