2010-08-28 83 views
3

是否有任何工具可以将去混淆代码重命名为.NET dll的可读代码?重命名去混淆代码

混淆=转换原变量名,命名空间非可读变量名,还改变控制流,使其很难饼干猜测的原代码

解混淆混淆=逆过程。将不可读的变量名称,名称空间转换为可读的名称空间,如A1,A2(可以将原始名称转换为原始名称),这使得跟踪和理解原始源代码变得很容易。

+10

你可能会发现这个社区不愿意去混淆。有少数使用案例可以将反混淆视为符合道德标准。 – kbrimington 2010-08-28 05:35:01

+1

你有这样做的合法理由吗? – Justin 2010-08-28 07:31:39

+3

说穿了:你需要了解这个代码的所有者不希望你反汇编它的前额大小是多少? – 2010-08-28 12:55:57

回答

0

你的意思是看符合的dll内的代码吗?如果是这样,我使用redgate的.net Reflector。

+0

是的,但我想要一个工具来重命名不可读的变量名或...在可疑的模糊dll中。 – Ehsan 2010-08-28 09:29:07

7

您可以再次对其进行模糊处理,但禁用重载等选项。这样,成员将被命名为A,B,C ...,而不是所有被命名为A(使用重载)或具有不可打印的名称。

此外,IL级优化器通常可以撤消控制流混淆并删除用于使反编译器崩溃的死代码。

一旦你有可编译的代码,使用Visual Studio的重命名重构来引入名称。工具无法自动猜出合适的名称。

+0

我确定有一些工具用于此目的,但我无法通过Google搜索找到它们,您正在解释混淆过程,但我的问题明确提到了DE-obfuscation(这意味着将不可读的变量名称转换为可读取的变量名称A1,A2,B3,... – Ehsan 2010-08-28 20:32:30

+2

混淆器通常有选择新名称的方式,如果禁用重载和不可打印的名称,那么混淆已经混淆的程序集实际上会使名称更具可读性 – Daniel 2010-08-28 23:47:05

+0

这是一个好主意我应该检查出 – Ehsan 2010-08-29 14:17:11

1

否否否则为什么您的意见中存在混淆工具?你所谓的可读的变形名称不再存在于模糊处理的程序集中,因为它们已被重命名为不可读的,而且没有工具可以猜出原始名称是什么。

+1

我不想原来的名字请注意,我只是想转换回非r的问题eadable变量名到可读的不是原来的名字我很明显,我不能将它们转换回它的原始名称,我想变量像A1,A2,B3 ... – Ehsan 2010-08-28 20:27:24

+0

您仍然没有提供任何合理的解释这样做的动机。混淆是一个用于保护知识产权的过程。通过混淆他的程序集,代码的作者显然不希望其他人去混淆它。 – 2010-08-28 21:50:54

+0

我想确保没有人能破解我混淆的源代码,你是否也需要我父亲的ssn呢?如果您不知道解决方案,则不必回答 – Ehsan 2010-08-29 14:20:44