【问题标题】:What would be the value of, a variable assigned to On Error Resume Next?分配给 On Error Resume Next 的变量的值是多少?
【发布时间】:2018-05-31 22:26:30
【问题描述】:

我已经开始逆向工程并使用visual basic反编译器,我得到了这个,虽然它是基本的,但我唯一不明白的是(是这段代码):

  loc_00405255: On Error Resume Next
  loc_00405262: -1 = Time$
  loc_0040526D: var_30 = On Error Resume Next
  loc_00405273: edi = Date$
  loc_0040527E: var_34 = var_30

var_30 会包含什么内容?

编辑 2:

因为我来自文档 here,我没有看到 On Error Resume Next 没有返回任何内容。

下面是整段代码的一部分:

Dim var_140 As Variant
  loc_00405255: On Error Resume Next
  loc_00405262: -1 = Time$
  loc_0040526D: var_30 = On Error Resume Next
  loc_00405273: edi = Date$
  loc_0040527E: var_34 = var_30
  loc_004052B7: var_24 = Text2.Text
  loc_004052BF: var_144 = var_24
  loc_00405301: var_168 = var_24
  loc_00405314: var_C4 = var_168
  loc_00405357: var_28 = Text1.Text
  loc_0040535F: var_14C = var_28
  loc_004053A8: Asc(var_28) = Asc(var_28) + 0001h
  loc_004053C3: var_16C = var_30
  loc_004053D6: var_54 = var_16C
  loc_0040540B: var_2C = var_34
  loc_00405418: var_84 = Right$(var_2C, 2)
  loc_00405428: var_E4 = "Grand-Theft-Auto-Vice-City"
  loc_0040543C: var_F4 = "bbidhan-ThE-Great"
  loc_004054AF: var_150 = (var_168 = Chr(Asc(var_28)) & Right(var_16C, 2) & Right$(var_2C, 2) & "Grand-Theft-Auto-Vice-City" & "bbidhan-ThE-Great")
  loc_0040552B: If var_150 = 0 Then GoTo loc_004057C2
  loc_00405588: var_38 = Global.App
  loc_0040558D: var_144 = var_38
  loc_004055E5: var_24 = Global.Path
  loc_004055EA: var_14C = var_24

编辑 1:

Q2. Right(var_16C, 2) & Right$(var_2C, 2)

以上两者的区别,带$符号?

【问题讨论】:

  • VB.NET 与 VBA 不同,对我来说这看起来像 VB6。你能确认哪一个是正确的吗?
  • 我建议在反编译列表中加一点盐-原始代码信息在编译过程中会丢失,因此您只会与原始代码如此接近。 On Error 没有返回值,所以本质上是反编译器出错了。在On Error Resume Next 之后,任何异常都将被忽略,因此如果Right 函数调用会抛出异常,则不会分配值,变量将保留其先前的值。
  • Right 返回一个 Variant(字符串),而 Right$ 返回一个字符串。在大多数情况下,可以忽略它们之间的差异——它们几乎是等价的(尽管不完全一样)。
  • 在 Vb6 中,On Error Resume Next 是一个语句,不返回值,如 described in the VB6 docs。 [你链接到 Vb.Net 文档。] 反编译器在骗你。
  • 它可能是内部变量,它保存了发生错误时要做什么。

标签: vb6 reverse-engineering decompiling


【解决方案1】:

On Errora statement,而不是表达式。说some_variable = On Error 是语法错误。

您的反编译器似乎正在尝试使用该语法来传达某些东西,但无论它试图传达什么,在 VB6 中都无法表达,当然也不是我通过查看它直观地理解的东西。它可能试图告诉您一些用于跟踪错误信息的内部簿记,或者它可能只是您正在使用的反编译器中的错误。这不是一个有意义的表达。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多