-2
我想寫一個混淆器使用mono.cecil,現在正在重命名變量。我知道變量名不存儲在程序集(我提供給混淆器)中,但在pdb中。有沒有一種方法可以只使用程序集進行重命名(例如生成pdb然後重命名)?混淆 - 重命名變量與mono.cecil
我想寫一個混淆器使用mono.cecil,現在正在重命名變量。我知道變量名不存儲在程序集(我提供給混淆器)中,但在pdb中。有沒有一種方法可以只使用程序集進行重命名(例如生成pdb然後重命名)?混淆 - 重命名變量與mono.cecil
無需贅述PDB事情......
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
}
}
}
重命名方法和重命名變量是兩回事。該問題詢問關於重命名變量。 – hvd
你是不是想混淆PDB?如果變量沒有出現在編譯後的代碼中,那麼混淆變量會有什麼意義呢? –
我想混淆可執行文件,所以當我反編譯變量時會有隨機名稱。我可以重命名類定義和方法,但變量不會改變,我無法弄清楚代碼是如何實現的。 – noctusnerdin
呃?這整個問題對我來說沒有多大意義。你爲什麼要在你的場景中分發一個pdb?如果你不分配任何pdb,那麼在任何地方都沒有變量名,所以需要改變變量名。 – hvd