不混淆地重命名所有变量和文字
Renaming all variables and literals without obfuscation
我想重命名代码中的所有 类 和变量,以使其更加模糊。例如这个示例代码:
public class Dog
{
public Dog()
{
Bark(4);
}
private void Bark(int times)
{
//Do something
}
}
变成:
public class Cat
{
public Cat()
{
Wood(4);
}
private void Wood(int asdasd)
{
//Do something
}
}
如果这不可能,也许更简单的方法是我们只需在每个 variable/name:
的中间添加一个字符
public class Do1g
{
public Do1g()
{
Bar1k(4);
}
private void Bar1k(int time1s)
{
//Do something
}
}
功能保持不变,并且是人类可读的;但是,关于变量命名、类、方法等的所有信息都已更改。
有没有办法在保持可读性的同时进行混淆?
首先,我不知道如何使用它,但是,在评论中你说创建一个看起来像所需对象的新对象是可以接受的,所以
这是我的建议
- 使用反射读取class的所有方法
- 使用第 1 步中的所有属性和方法名称创建一个列表
从那里您可以使用 LINQ 创建一个新对象,名称从您创建的列表中创建。
请记住,我不知道这将如何工作,甚至不知道这是否会工作。
您可以使用 Visual Studio 代码模型重命名符号。例如,要将 'x' 添加到当前函数名称:
EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;
EnvDTE80.CodeElement2 func = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementFunction]
as EnvDTE80.CodeElement2;
func.RenameSymbol(func.Name + "x");
(您可以 运行 使用 Visual Commander 或在您自己的扩展中使用此代码)。
此重命名操作还会更新所有引用。您可以自然地扩展此示例以重命名 类、命名空间和流程文件、项目。
我想重命名代码中的所有 类 和变量,以使其更加模糊。例如这个示例代码:
public class Dog
{
public Dog()
{
Bark(4);
}
private void Bark(int times)
{
//Do something
}
}
变成:
public class Cat
{
public Cat()
{
Wood(4);
}
private void Wood(int asdasd)
{
//Do something
}
}
如果这不可能,也许更简单的方法是我们只需在每个 variable/name:
的中间添加一个字符public class Do1g
{
public Do1g()
{
Bar1k(4);
}
private void Bar1k(int time1s)
{
//Do something
}
}
功能保持不变,并且是人类可读的;但是,关于变量命名、类、方法等的所有信息都已更改。
有没有办法在保持可读性的同时进行混淆?
首先,我不知道如何使用它,但是,在评论中你说创建一个看起来像所需对象的新对象是可以接受的,所以
这是我的建议
- 使用反射读取class的所有方法
- 使用第 1 步中的所有属性和方法名称创建一个列表
从那里您可以使用 LINQ 创建一个新对象,名称从您创建的列表中创建。
请记住,我不知道这将如何工作,甚至不知道这是否会工作。
您可以使用 Visual Studio 代码模型重命名符号。例如,要将 'x' 添加到当前函数名称:
EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;
EnvDTE80.CodeElement2 func = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementFunction]
as EnvDTE80.CodeElement2;
func.RenameSymbol(func.Name + "x");
(您可以 运行 使用 Visual Commander 或在您自己的扩展中使用此代码)。
此重命名操作还会更新所有引用。您可以自然地扩展此示例以重命名 类、命名空间和流程文件、项目。