2017-11-17 156 views
0

在我的公司,我們購買了一個巨大的軟件包(用C#編寫),目前正在我的部門推出。由於商業祕密的原因,我的公司選擇不與開發商簽訂服務合同,所以現在我可以自己學習軟件/硬件以及所有的故障排除。在做這件事的時候,我在某個地方做了一個改變,導致了我以前無法撤消的錯誤。當試圖生成報告時,我收到以下錯誤消息。試圖從已完成的軟件中訪問哈希表

enter image description here

我試圖查看哈希表的內容,這樣我就可以刪除的內容被保留的鍵「1」或者讓我可以回到任何改變,這樣,當我生成報告它會嘗試輸入不同的密鑰。你對哈希表的位置有何建議或者我可以讀取它?我已經看過其他文章如何閱讀哈希表。我只是無法找到它。

我可以訪問大多數(如果不是全部).h和.dll文件,所以我一直在探索這些。幾年前,我參加了一些C++課程,所以我對如何閱讀代碼有一個總體思路。

哈希表是否在可執行文件中?它位於何處?我找不到它作爲.txt或.mdb文件。一旦我找到它,我將如何訪問它?我可以發佈一些代碼,如果這會有所幫助的話,但我不確定代碼中的哪些部分對您有用。任何幫助將不勝感激。提前致謝。

+0

在字典的'Key,Value'對上閱讀..這基本上說,你不能有2個具有相同值的鍵,如果你有權訪問'SRC',在'= new Dictionary <' – MethodMan

+1

@MethodMan stacktrace顯示這是'Hashtable',而不是'Dictionary'。無論如何,修改「龐大的軟件包」而不知道你在做什麼似乎不是一個好主意。 – Evk

+0

錯誤指的是'strConfig'。你檢查過你的配置文件嗎?有可能是某種具有重複鍵的key = value格式。可能在「原因」部分中,再次通過消息中的提示。 – Blorgbeard

回答

0

如果您沒有該DTL3DTDTP的源代碼,那麼您的操作就嚴重失敗 - 您必須對其進行反向工程,以瞭解發生了什麼。如果您可以從Visual Studio連接到正在運行的應用程序並攔截異常(「僅我的代碼」已禁用)您已安裝Reflector加載項,您將(可能)能夠查看重新組合的源代碼和調用堆棧,甚至可能是變量。那個HashTable可以是DTL3DTDTP的一個字段,也可以是一個局部變量或其他東西......什麼時候將第二個(和第一個)重複密鑰添加到它是有人猜測......在最壞的情況下,你可以重新組裝整個產品,花一個月閱讀代碼。

當然,如果包裝是商業性的,那麼所有這些都將是非法的 - 知識產權所有者不喜歡反向工程師。

如果你確實有源碼,只需調試它。