2014-09-29 89 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