[屌絲的逆襲系列]進程注入是王道之為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……     :)  依然的又雞動一次    

   這篇先寫到這里,下篇來分析下實現原理。  

附錄   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM