[屌丝的逆袭系列]进程注入是王道之为NhibernateProfiler增加“附加到进程”功能-介绍

  上一篇我们写了Nhibernate Profiler 2.0 的破解,做的是破坏性的工作,这篇我们来点建设性的东西--为Nhibernate Profiler 增加一个附加到进程的功能…… 

  注:本来 是讲要写一个自动破解工具 的 ……     

  没用过Nhibernate Profiler的人可能不明白我究竟在说些什么

  所以,我们先来简单说一说Nhibernate Profiler是怎么使用的。

  要想使用Nhibernate Profiler的功能,首先要在你的工程里添加一个对HibernatingRhinos.Profiler.Appender.dll的引用,这个文件就在Nhibernate Profiler 根目录下,添加引用后,还要找个合适的地方(启动的时候,Nhibernate初始化前后等)加这么一句

HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize(); 

  这是相当让人蛋疼的事情,我一般称这种为强奸式调试工具,也就是说不管你愿不愿意,他都要强行插入,这点实在让人无法忍受,那么怎么样才能既不被强奸又能使用它的功能呢,方法当然是有的,这正是我们下面要来描述的。 

  一样的,为了更好的描述实现思路,我们先来看看实现后的样子           

  不过在这之前,我们还要做一些准备,至少得准备一个使用了Nhibernate技术的程序作为测试的目标,这个在附录的根目录下有一个叫测试的文件夹,那里面有一个解决方案,这是我参考Nhibernate官网的Get Start 写的一个Winform例子 (目前我们这个只支持附加到32位的Winform程序,要想附加到WEB的话,可能要重新实现很多东西,暂时懒得研究了,有时间的话可能会去再搞搞,要想实现附加到64位的Winform,需要设置一些参数,重新编译,这个 在讲解的时候会 提到)。 看源码可以知道,我们这个并没有引入HibernatingRhinos.Profiler.Appender.dll,也没有在代码加那句话 ,要的就是这样的纯洁性,纯的让你鸡动。 当然如果你不想看代码的话,在这个目录下还有一个build文件夹,里面有一个Winform.exe 是编译后的文件,可以直接运行,当然运行前, 要先建数据库表,建表语句在build文件下有一个Tables.sql ,我使用的是SQL SERVER数据库,建好后,再配置一下hibernate.cfg.xml里的数据库连接选项。 这些做完后,运行或者直接打开 Winform.exe 。  

 

  先不要点   按钮   

  回到附录的根目录下的NHProf文件夹,找到NHProfLancher.exe文件(注:不是NHProf.exe),双击打开。 本来是准备实现成点击 Help菜单的第一个选项(原来是Commercial Support ,现在我已经改成 Attach To Process)就可以打开附加选项的,但令人蛋疼的silverlight权限问题(spy++看一下就知道了,silverlight的桌面应用其实也就是在一个WEBBROWSER控件里执行xap ,所以他不是一个完整意义的桌面程序),这就使得他的权限其实和WEB的权限是一样的,所以Process.Start打开网址可以,但当想打开一个本地文件时却完全没啥反应了,另外对silverlight也不是很熟,所以也就懒得去深入研究了,在这里只是简单的改了个容易识别的网址 ,  留着以后有时间再研究 吧 )  

  双击 NHProfLancher.exe后,我们发现程序已经打开了。 

 

  这时候回到刚才的测试程序Winform.exe 。然后点击   按钮  

  插入成功,看看数据库也成功了,再看看Nhibernate Profiler的主界面。

  没啥反应 ,这是当然的,这是不被强奸的下场 。 

  OKAY ,这时候 CTRL + ALT + 1 123那个1,这么蛋疼的热键,我想不会和别的冲突了吧)。    

  调出了附加进程。 

  (名字Form1 你先看着吧

  可以看到列出了所有的32位的DotNet程序的进程。其中也包括了我们的那个测试程序 Winform.vshost(调试模式下的进程名)   选中她        

  点击,会弹出如下的提示框      

 

  点击确定 。 

  这时候看一看NHibernate Profier 的主界面  

  看到上面的那个Winform了吗,说明已经附加上去了,当然还是要确实一下,回到测试程序。再点击 添加数据 。 这时候再看一下 Nhibernate Profiler  主界面        

  已经监控到刚才 那个操作了。 OKAY……     :)  依然的又鸡动一次    

   这篇先写到这里,下篇来分析下实现原理。  

附录   

posted @ 2013-04-09 16:06  乔伟2024  阅读(1625)  评论(7编辑  收藏  举报