首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法插入后Mono.Cecil get/resolve方法的RVA

方法插入后Mono.Cecil get/resolve方法的RVA
EN

Stack Overflow用户
提问于 2012-11-02 14:30:35
回答 1查看 308关注 0票数 0

我如何在不重新加载整个模块的情况下解析我注入的方法的RVA?

我总是得到0作为添加的方法的RVA。有没有什么方法可以在不编写和重新加载程序集的情况下检索RVA?谢谢!

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-02 18:14:10

新方法RVA是在写入时计算的,但模型不会更新。我想我们可以认为这是一个bug。

现在,您必须分析生成的程序集。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13190427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档