2017-11-17 159 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的一个字段,也可以是一个局部变量或其他东西......什么时候将第二个(和第一个)重复密钥添加到它是有人猜测......在最坏的情况下,你可以重新组装整个产品,花一个月阅读代码。

当然,如果包装是商业性的,那么所有这些都将是非法的 - 知识产权所有者不喜欢反向工程师。

如果你确实有源码,只需调试它。