C# 混淆-使用mono.cecil重命名变量
我正在尝试使用mono.cecil编写一个模糊器,现在正在重命名变量。我知道变量名不是存储在汇编(我提供给混淆器)中,而是存储在pdb中。是否有一种方法可以仅使用程序集进行重命名(例如生成pdb然后重命名)?无需在此处讨论pdb内容C# 混淆-使用mono.cecil重命名变量,c#,mono,obfuscation,C#,Mono,Obfuscation,我正在尝试使用mono.cecil编写一个模糊器,现在正在重命名变量。我知道变量名不是存储在汇编(我提供给混淆器)中,而是存储在pdb中。是否有一种方法可以仅使用程序集进行重命名(例如生成pdb然后重命名)?无需在此处讨论pdb内容 using Mono.Cecil; ... AssemblyDefinition asm = AssemblyDefinition.ReadAssembly("path to your program"); foreach (TypeDefinition t
using Mono.Cecil;
...
AssemblyDefinition asm = AssemblyDefinition.ReadAssembly("path to your program");
foreach (TypeDefinition t in asm.MainModule.Types)
{
if (!t.Name == "<Module>")//global type
{
foreach (MethodDefinition m in t.Methods)
{
m.Name = "New Name for your method";
// You better use a random name & an array where you can put
// names that has been already used in order to avoid having twice
// the same name
}
}
}
使用Mono.Cecil;
...
AssemblyDefinition asm=AssemblyDefinition.ReadAssembly(“程序路径”);
foreach(asm.MainModule.Types中的类型定义t)
{
如果(!t.Name==“”)//全局类型
{
foreach(t.Methods中的方法定义m)
{
m、 Name=“方法的新名称”;
//您最好使用一个随机名称&一个可以放置
//已使用的名称,以避免重复使用
//同名
}
}
}
您不应该分发带有模糊程序集的pdb
如果需要重命名pdb中的变量:
- 您需要Cecil.Pdb.dll
- 使用
assembly.MainModule.LoadSymbols()在程序集后加载pdb
- 使用
variableDefinition.name=newName
- 使用
assembly.MainModule.SaveSymbols()保存pdb