首页
社区
课程
招聘
[原创]随便说说compileMethod方法
发表于: 2008-8-19 13:38 16204

[原创]随便说说compileMethod方法

2008-8-19 13:38
16204

闲来无事,随便写点,老话题了,高手略过。
    compileMethod方法在各类.NET内核的文章中出现频率相当高,因为它是JIT引擎工作的关键函数。其原型如下(参考sscli代码):

CorJitResult __stdcall FJitCompiler::compileMethod (
            ICorJitInfo*               compHnd,            /* IN */
            CORINFO_METHOD_INFO*        info,               /* IN */
            unsigned                flags,              /* IN */
            BYTE **                 entryAddress,       /* OUT */
            ULONG  *                nativeSizeOfCode    /* OUT */
            )
/*********************************************************************************
 * a ICorJitInfo is the main interface that the JIT uses to call back to the EE and
 *   get information
 *********************************************************************************/
class ICorJitInfo : public virtual ICorDynamicInfo
{//省略}
/*****************************************************************************
 * ICorDynamicInfo contains EE interface methods which return values that may
 * change from invocation to invocation.  They cannot be embedded in persisted
 * data; they must be requeried each time the EE is run.
 *****************************************************************************/

class ICorDynamicInfo : public virtual ICorStaticInfo
{//省略}
/*****************************************************************************
 * ICorStaticInfo contains EE interface methods which return values that are
 * constant from invocation to invocation.  Thus they may be embedded in
 * persisted information like statically generated code. (This is of course
 * assuming that all code versions are identical each time.)
 *****************************************************************************/
class ICorStaticInfo : public virtual ICorMethodInfo, public virtual ICorModuleInfo,
                       public virtual ICorClassInfo,  public virtual ICorFieldInfo,
                       public virtual ICorDebugInfo,  public virtual ICorArgInfo,
                       public virtual ICorLinkInfo,   public virtual ICorErrorInfo

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 198
活跃值: (1585)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
期待应用范例。
2008-8-19 13:40
0
雪    币: 5275
活跃值: (461)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
3
有现成的:
http://bbs.pediy.com/showthread.php?t=69338&tcatid=10

其化完全看个人想像力了。
2008-8-19 13:46
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
有点高了,我晕
2008-8-19 14:36
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
5
占位学习
2008-8-19 16:03
0
雪    币: 647
活跃值: (564)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
这个要支持,期待例子,自己jit hook不太会写
2008-8-19 18:23
0
雪    币: 5275
活跃值: (461)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
7
晕,3楼有示例链接
2008-8-19 19:09
0
雪    币: 149
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
compileMethod 在 mscorjit.dll mscoree.dll mscorwks.dll 中都找不到,我的。net framework 是 Version 2.0.50727.1433
2009-2-9 19:00
0
雪    币: 419
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错,正想学习jit hook
2012-2-14 23:24
0
雪    币: 229
活跃值: (94)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
大神   可能我的问题比较弱智,但是就是不懂 ,我想问对于 clr  v4.0之后的  findMethod函数 怎么找其相对偏移?
因为在display calls  代码里面  有用到这个函数   对于GetMethodName这个函数 参考“CLR v4 HOOK JIT 的一些变化”这篇文章可以知道它偏移的改变了,  但是对于findMethod  发现整个虚表里面没有 ?  求解答
2015-7-6 11:33
0
游客
登录 | 注册 方可回帖
返回
//