首页
论坛
专栏
课程

[.NET平台] [讨论].NET Profiling API

2009-1-17 15:22 5918

[.NET平台] [讨论].NET Profiling API

2009-1-17 15:22
5918
<<微软.NET程序的加密与解密>>中的第十二章中的非托管API,我研究了很多次,而且看了实验了例程,对于prifile.dll动态内存补丁还是没有搞懂.

好象演示的文件都是在命令行模式下运行的,profile.dll 似乎不能监视我的.net windows XP程序的事件,而且没有output.log文件产生,请问大鸟们,profile.dll如何记录非控制台.net程序的事件(资源管理器中运行的程序).

http://bbs.pediy.com/showthread.php?t=31402中的例子也是命令行中运行的,请问如何对windows XP管理器中运行的程序打内存补丁呢

对于prifiling API大家讨论的很少,其实现在的.net程序可以用profile API动态内存补丁高效省事(现在anti profiler在.NET中应用不是很多见),因为.net在运行时用JIT动态分配内存和转换成本机机器码,更难用其他内存补丁.直接更改exe/dll又因为又强名称和CRC32检校,也行不通.
对于我的看法,各位有何看法.

感谢

[公告][征集寄语] 看雪20周年年会 | 感恩有你,一路同行

最新回复 (5)
tankaiha 29 2009-1-17 17:45
2
0
Profiling API更多用于在开发和测试中分析程序性能,找出瓶颈和问题,用在动态内存补丁中的实战性一般。

内存补丁的话,本地loader后修改内存也挺直接的。

Profiler.dll不能记录你运行的.net窗口程序一般有两个原因:一是你没有设置相关变量和注册profiler(而从命令行运行该程序就是做了这个工作,或者你自己写一个窗口的Loader做这些工作),二是有anti。

仅供参考。
woodwu 2009-1-18 11:19
3
0
请问楼上:
1.本地Loader是否是内存补丁,我试过好机款工具,但没有成功内存补丁.loader工具要加载我的exe软件,等将动态连接库调入内存(我想补丁的就是在DLL文件中),然后Loader要有个中断,再搜索内存中的字节,修改,取消断点,让软件继续运行.请问这个工具软件是否有软件下载,名称?
2.我照着您的书中12.6的内容和例子,在命令提示符运行例子,完全可以,但我的DotNET程序就不行,程序中也没有Anti profiler,请教是否需要更改您的例子中profiler.dll才能跟踪我的.NET程序?

感谢指导
tankaiha 29 2009-1-18 13:29
4
0
1,好像没有现成的软件,win32下可能有,你在坛里搜搜。自己写可以。中断的话,就取在compileMethod,判断是否是你需要的那个method,如果是,就修改IL。
2,可能是.net版本问题,或是兼容性,这个我就不太清楚了。(你可以下载该程序的官方版,未经我修改的,进行测试,地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0&DisplayLang=en
woodwu 2009-1-19 18:52
5
0
谢谢tankaiha,您是否有空写profile API或者是.NET内存动态补丁(修改IL码)的文章,我很想拜读您的大作.您的书写得非常好,对我这种新手指导意义大.付费的文章也行.因为很少有详细的资料谈到这个方面的.
http://bbs.pediy.com/showthread.php?t=30940
http://bbs.pediy.com/showthread.php?t=31032
http://bbs.pediy.com/showthread.php?t=31402

这三篇好象是对命令提示符中运行得dotNET,没有谈到如何在资源管理器中运行的.NET使用内存补丁,希望的到您的指点.谢谢
cnlcg 2009-2-9 18:57
6
0
compileMethod 在 mscorjit.dll mscoree.dll mscorwks.dll 中都找不到,我的。net framework 是 Version 2.0.50727.1433
游客
登录 | 注册 方可回帖
返回