相关文章  
  • 浅谈如何利用BartPE创建PE工具盘
  • Windows Mobile 2003 Second Edition 中 ActiveSync 编程模型的增强功能
  • 在完成所有绑定后仍然有许多要进行的操作
  • 在你的企业中管理Windows和应用程序
  • 动态加载用户控件的组件
  • 小心GDI+资源泄漏 -- 猜想 测试 应对全过程
  • 浅谈 C# 中的代码协同 (Coroutine) 执行支持
  • 在 C# 中处理结构内的数组源代码分析
  • 教你通过 Emit 实现动态生成一个类
  • 如何才能在10046event自由漫步
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    谈 WinDbg 之 InternalCall 的使用与实现8

    ernalCall 的方法也是有 RVA 的,只是他们指向的是一个直接返回的 ret 的 IL 指令。而 FindImplForMethod 对 ECall 类型的处理方法,也因 rva 不为 0,而从每次调用时以 FindECFuncForMethod 函数在全局 ECall 注册表中通过字符串匹配查找,改为通过 mscorwks!ECall::EmitECallMethodStub() 方法,生成一个对 ECall 实现代码的调用 Stub 代码。这样一来,只需要在第一次调用 ECall 代码时,完成字符串匹配性质的 ECall 实现代码定位,就可以一劳永逸的以等同于 JIT 代码的方式调用了。
      可以通过在 FindImplForMethod 方法上下断点的方式,跟踪每次 InternalCall 类型函数的调用初始化工作,如:
      
      以下为引用:
      
      0:000> bp mscorwks!FindImplForMethod
      
      0:000> g
      Breakpoint 0 hit
      eax=00000001 ebx=00000001 ecx=79ba9e68 edx=c0000000 esi=79ba9e68 edi=00000000
      eip=791d8d5b esp=0012f084 ebp=0012f158 iopl=0     nv up ei pl nz na pe nc
      cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000       efl=00000202
      mscorwks!FindImplForMethod:
      791d8d5b 55        push  ebp
      
      0:0

    页码:[1] [2] [3] [4] [5] [6] [7] [8] [9]8页、共9页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved