0

我不得不更新一個古老的Intranet應用程序,它是使用經典ASP編寫的,並使用了內部COM +服務。我無法在任何地方找到此對象的源代碼,並且它沒有被開發人員記錄。COM +方法(如何查看內部?)

我可以通過Start -> Administrative Tools -> Component Services查看服務中可用的方法,但不能在我的生活中弄清楚如何查看方法內部,看看他們在做什麼。

反正有反編譯這些COM +服務,或者看看他們的方法做了什麼,或者我註定要純粹觀察舊的應用程序,並盡我所能模仿行爲和數據?

注意:我從舊服務器導出服務,安裝在我的開發盒中,添加了對VS2010項目的引用,並嘗試使用對象資源管理器辨別這些方法。什麼都沒有......

回答

2

COM服務包括對COM類及其參數上存在哪些方法的類型描述,以便自動化控制器可以找出如何將參數傳遞給COM方法。

除此之外,除了本機x86機器代碼本身之外,沒有什麼可以指示COM類在內部做什麼。您可以嘗試在DLL上使用x86反彙編程序,但除非您已經熟悉x86機器代碼指令,否則這不會有很多幫助。

將源代碼編譯爲本地機器代碼會拋出大量信息。變量名稱,內部函數名稱,CPU無需執行指令並執行原始源代碼所指示的操作。反彙編程序幾乎不可能重新構造這些名字,這些代碼將有助於提供代碼打算執行的線索。反彙編有時可以幫助弄清楚核心邏輯,但是它需要人們進行大量的仔細分析和努力,甚至可以劃傷表面。這就像試圖通過觀察單個草葉來了解森林。

+0

謝謝主席閣下的回答。看來這些方法主要是從數據庫中獲取數據。我已經確定了global.asa文件中的連接字符串。有沒有辦法通過反編譯至少確定SQL選擇命令?如果是這樣,我可以在哪裏得到DLL?我能夠導出的是包含MSI安裝程序的* .CAB文件。 – Chiramisu 2013-02-20 01:32:42

+0

您將需要安裝COM組件才能在其DLL中查找。反彙編DLL可能會向您顯示由DLL使用的字符串片段以形成SQL查詢。如果你幸運的話,你正在尋找的SQL查詢是在一個參數化的字符串常量中。如果你不那麼幸運,該DLL使用大量的小字符串concat操作來構造SQL查詢,在這種情況下,在反彙編代碼中很少會看到。安裝DLL還應使您能夠調用DLL方法,並在調試器中逐步執行asm代碼。 – dthorpe 2013-02-20 18:44:00