首页
社区
课程
招聘
[求助].net 4中compileMethod的地址是多少
发表于: 2010-6-22 17:34 10198

[求助].net 4中compileMethod的地址是多少

2010-6-22 17:34
10198
我电脑上是.NET4正式版,即v4.0.30319

其中mscoree.dll文件的版本是 4.0.31106.0

没装IDA,哪些帮我看看compileMethod函数的地址是多少?

另外,怎么在OD/WinDbg中通过函数名compileMethod来下断点,而不是地址

系统环境:Windows7 Ultimate x86

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

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
.NET 4.0里好像没有mscoree.dll这个文件了, 记得有个clrjit.dll。
2010-6-23 10:36
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我只关心compileMethod的地址

另外,好像跟操作系统有关,我在XP下,也安装了.NET4,如果目标程序是.NET2,可以在7906E7F4/7906E804(具体哪一个忘了)下断点。(当然,如果目标是.NET4就不行)

而在WIN7下,无论目标是.NET2还是.NET4都无法断下
2010-6-23 11:04
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以用这个
bu mscorjit!CILJit::compileMethod
2010-6-23 11:26
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
bu?

是bp?

bp mscorjit!CILJit::compileMethod???

OD里面无法直接这样下断点,需要符号文件?
2010-6-23 11:35
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哦,我说的是在windbg里。
2010-6-23 11:37
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
WinDbg里,我这提示:

Couldn't resolve error at 'mscorjit!CILJit::compileMethod'
2010-6-23 11:56
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
有木有人知道呀
2010-6-24 10:57
0
雪    币: 337
活跃值: (74)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
9
bp 79815e24

(也即方法:clrjit!CILJit::compileMethod处)
C:\WINDOWS\system32\mscoree.dll     (4.0.31106.0)
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\cljit.dll

今天刚好试了4.0的挂勾.
2010-7-5 21:01
0
雪    币: 21
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好像版本挺多的。 最好是 搜一下调试符号!
x clrjit!*compile*
2010-7-6 09:16
0
雪    币: 337
活跃值: (74)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
11
那这样,在本机用2010的C#写几句,没符号库和IDA时省事儿了:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WinApp1
{
    unsafe static class Program
    {
        [DllImport("clrjit.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern int* getJit();

        [StructLayout(LayoutKind.Sequential)]

        struct vtables
        {
            public int* p_compileAddress;
        };

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
       unsafe static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);


            vtables * a;
            a = (vtables*)getJit();
            int Address = *(a->p_compileAddress);

            MessageBox.Show("您clrjit!CILJit::compileMethod的地址为:  "+Address.ToString("X"));
            
        }
    }
}
2010-7-6 18:44
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
虽然我现在已经可以在WinDbg里直接用函数名compileMethod,而不用地址,不过地址还是有用的

我这里的地址跟你不一样,而且2.0的mscorjit里的compileMethod函数地址也跟网上大家说的不一样,难道跟操作系统有关?
2010-7-13 15:05
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
那岂不是既跟.net版本有关,还跟操作系统有关?

我是Win7 Ultimate 32位
2010-7-13 15:06
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
郁闷了,我这里compileMethod函数的地址反复变(我用grassdrago提供的方法获得地址,而且用OD验证了每次地址都是对的,能够停在断点),而且断下后,再F9继续,就出错了,提示如下对话框:
上传的附件:
2010-7-13 16:04
0
雪    币: 21
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
.net 2.0也有很多版本,每个版本的函数地址都不一样。 有什么大惊小怪的。

用windbg , bp mscorjit!CILJit::compileMethod下段就可以了。
2010-7-14 09:33
0
雪    币: 21
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
你拿OD调试.NET , 简直是。。。。。。。
2010-7-14 09:33
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
关键是我隔几秒钟地址就变了啊,几秒钟啊!
2010-7-19 11:46
0
游客
登录 | 注册 方可回帖
返回
//