2012-11-02 42 views
0

如何解決我注入的方法的RVA而無需重新加載整個模塊?
我總是得到0作爲添加方法的RVA。無論如何無需編寫和重新加載程序集來檢索RVA?謝謝!Mono.Cecil在方法插入後獲取/解析方法的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 

回答

2

新方法RVA在寫入時計算,但模型未更新。我想我們可以認爲這是一個錯誤。

現在您必須分析生成的程序集。

+0

感謝您的意見。 – Ron