【问题标题】:Decompilation Issues反编译问题
【发布时间】:2014-04-22 10:55:59
【问题描述】:

我是新来的,所以请耐心等待:)

任务: 我已经反编译了非常旧的应用程序以采用它进行鼠标点击和触摸。我已经使用 .NET Reflector 8 进行反编译过程。在我在 VS2013 中打开解决方案并尝试调试应用程序后,我处理了以下错误:

“错误1使用未分配的局部变量'pass'Form1.cs”

代码如下: 第一个错误:

 foreach (Software.dsBDD.list_table21 row in dataTable.Rows)
 {
            PictureBox box;
            MemoryStream stream;
            Panel panel;
            Label label;
            bool? pass;
            if (this.pass.HasValue && this.end)
    {
    pass = this.pass;
    }
if ((***pass***.GetValueOrDefault() && pass.HasValue) || row.view_only)
}

第二个错误:

    Panel panel = sender as Panel;
    if (panel.Controls.Count > 0)
    {
        bool? pass;
        if (this.pass.HasValue && this.end)
        {
            pass = this.pass;
        }
        if ((***pass***.GetValueOrDefault() && pass.HasValue) || this.view_only)
     }

(我已将编译器选择的错误标记为通过

请提出问题所在。

谢谢!

【问题讨论】:

  • 通行证左侧的星号表示其指向指针的指针,但其右侧的星号表示什么?
  • 实际上并不能保证反编译的应用程序会再次编译为正确的可执行代码。
  • 非常抱歉,这是我在这里的第一个问题。星号仅用于选择编译时出现错误的代码中的单词
  • @user3560075 我会非常小心。您可能已经解决了编译错误,但代码没有任何意义。 pass 是一个局部变量和一个字段 - 你确定它正在做它现在应该做的事情吗?即使是这样,也要考虑重写它以使其清楚。这非常令人困惑,而且使用“隐藏”字段的变量名(或参数)通常是一种不好的做法。
  • ive compiled and tested application and it works! now, after i have source code i need to "teach" my app to respond to mouseclicks, rather than keyboard inputs... ill 尝试打开新问题 =)

标签: c# .net reflector


【解决方案1】:

t 是因为您的变量 pass 没有分配值。

您可以通过将null 分配给您的变量来解决此问题。

bool? pass = null;

【讨论】:

  • 实际上,我不知道这段代码中的“通过”是什么意思,但是这个小应用程序正在从文件中读取用户名和密码以访问数据库。
  • @user3560075 我不能告诉你,我没有你的应用程序。但我的猜测是它会跟踪用户是否填写了密码或用户名和密码的组合是否正确?
  • 我已经进行了更改,编译器已完成,没有任何错误,谢谢!它有效!
  • @user3560075 很高兴我能帮上忙 :)
  • 看来这个变量不应该为空。我检查了整个应用程序,发现这部分代码取决于:“this.qta.(this.q, tag, ref nullable2, ref end, ref this.pass)”,它从“bool?经过;” ...但是如何在我的“if”语句中声明它?
猜你喜欢
  • 2023-03-31
  • 2017-08-02
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多