-
-
[旧帖]
[讨论]获取.NET软件动态执行轨迹
0.00雪花
-
发表于:
2008-1-10 16:53
2899
-
[旧帖] [讨论]获取.NET软件动态执行轨迹
0.00雪花
我素知看雪的大牛们那是相当的牛!
情景:
a)假定一个方法A()执行时需要几个输入。
b)给定一个输入集合inputs,方法A()开始执行,在执行过程中A调用了方法B和C,B又调用了方法D,E,C调用了E...然后执行完毕。
A
/ \
B C
/ \ /
D E
请问怎么样获取这个动态的调用轨迹?
这里还有三个条件:
1、要检测的方法是属于一个已经编译好的软件中的一部分,故不可以通过在每个方法中添加log来跟踪;
2、必须是动态的跟踪,不可通过反编译成IL代码或者微软提供的一个现成的“CLRProfiler”工具来静态获得;
3、也不可通过多次输入同样的输入集合,每次截获JITCompilationStarted来归纳出可能的轨迹。因为jit编译是每次一方法,这样也跟静态获取差不多了。
我的一个猜测、想法:
请问当IL代码被JIT编译成本地代码并存储在内存中以后,是不是此时的执行就跟本地程序的执行过程一样了?此时,如何截获方法A调用了方法B、C呢?(如果是第一次调用JIT编译,我知道是可以通过Profiler来截获的)
是不是可以在JIT之后在Executive Engine执行方法之时截获每个方法到底调用了什么其他方法呢?
是.NET的执行引擎(EE)负责JIT之后的执行过程吗?那是否可以截获EE来获得执行轨迹呢?具体又如何做呢?
呵呵,不好意思,问了你很多问题。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!