能力值:
( LV2,RANK:10 )
|
-
-
2 楼
.NET 4.0里好像没有mscoree.dll这个文件了, 记得有个clrjit.dll。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我只关心compileMethod的地址
另外,好像跟操作系统有关,我在XP下,也安装了.NET4,如果目标程序是.NET2,可以在7906E7F4/7906E804(具体哪一个忘了)下断点。(当然,如果目标是.NET4就不行)
而在WIN7下,无论目标是.NET2还是.NET4都无法断下
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
可以用这个
bu mscorjit!CILJit::compileMethod
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
bu?
是bp?
bp mscorjit!CILJit::compileMethod???
OD里面无法直接这样下断点,需要符号文件?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
哦,我说的是在windbg里。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
WinDbg里,我这提示:
Couldn't resolve error at 'mscorjit!CILJit::compileMethod'
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
有木有人知道呀
|
能力值:
( 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的挂勾.
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
好像版本挺多的。 最好是 搜一下调试符号!
x clrjit!*compile*
|
能力值:
( 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"));
}
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
虽然我现在已经可以在WinDbg里直接用函数名compileMethod,而不用地址,不过地址还是有用的
我这里的地址跟你不一样,而且2.0的mscorjit里的compileMethod函数地址也跟网上大家说的不一样,难道跟操作系统有关?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
那岂不是既跟.net版本有关,还跟操作系统有关?
我是Win7 Ultimate 32位
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
郁闷了,我这里compileMethod函数的地址反复变(我用grassdrago提供的方法获得地址,而且用OD验证了每次地址都是对的,能够停在断点),而且断下后,再F9继续,就出错了,提示如下对话框:
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
.net 2.0也有很多版本,每个版本的函数地址都不一样。 有什么大惊小怪的。
用windbg , bp mscorjit!CILJit::compileMethod下段就可以了。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
你拿OD调试.NET , 简直是。。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
关键是我隔几秒钟地址就变了啊,几秒钟啊!
|
|
|