0

モジュール全体をリロードせずに注入したメソッドの RVA を解決するにはどうすればよいですか?
追加されたメソッドの RVA として常に 0 を取得しています。アセンブリを書き込んでリロードせずにRVAを取得する方法はありますか? ありがとう!

AssemblyDefinition asm = AssemblyDefinition.ReadAssembly("hello.exe"); 
ModuleDefinition mod = asm.MainModule;
TypeDefinition modType= mod.GetType("PrintClass"); //get class found in hello.exe
MethodDefinition MethodToInject= new MethodDefinition("PrintMethod", ..., ...); //filled
modType.Methods.Add(MethodToInject);

int InjectedRVA = MethodToInject.RVA; //Always get 0
InjectedRVA = modType.Methods.FirstOrDefault(mtd => mtd.Name == "PrintMethod").RVA; //Also get 0

asm.MainModule.Write("output.exe"); //write output
4

1 に答える 1

2

新しいメソッド RVA は書き込み時に計算されますが、モデルは更新されません。これはバグだと考えてよいと思います。

ここでは、生成されたアセンブリを分析する必要があります。

于 2012-11-02T10:14:09.687 に答える