Vb6 下一步错误恢复时分配给的变量的值是多少?

Vb6 下一步错误恢复时分配给的变量的值是多少?,vb6,reverse-engineering,decompiling,Vb6,Reverse Engineering,Decompiling,我已经开始逆向工程并使用visual basic反编译器,我得到了这个,虽然它是基本的,但我唯一不明白的是(这段代码): 是var_30包含的内容? 编辑2: 因为我在文档中没有看到下一次错误恢复时的,没有返回任何内容。 以下是整个代码部分的一部分: Dim var_140 As Variant loc_00405255: On Error Resume Next loc_00405262: -1 = Time$ loc_0040526D: var_30 = On Error Res

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

var_30
包含的内容?

编辑2: 因为我在文档中没有看到下一次错误恢复时的
没有返回任何内容。

以下是整个代码部分的一部分:

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: 第二季度。
右侧(var_16C,2)和右侧$(var_2C,2)

以上两种方法的区别在于,错误上带有“$符号”

不是表达式。说
some_variable=On Error
是语法错误


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

VB.NET与VBA不同,在我看来,它类似于VB6。您能确认哪一个是正确的吗?我建议您对反编译列表稍加注意—原始代码信息在编译过程中丢失,因此您只能非常接近原始代码
On Error
没有返回值,因此反编译器基本上是出了问题。在错误恢复下一步后,
任何异常都将被忽略,因此如果
Right
函数调用会引发异常,则不会有赋值,变量将保留其先前的值。
Right
返回变量(字符串),而
Right$
返回字符串。在大多数情况下,它们之间的差异可以忽略-它们几乎是等价的(虽然不完全相同)。在Vb6中,错误恢复时,下一步是一条语句,不返回值,如所示。[您链接到了Vb.Net文档。]反编译器在欺骗您。它可能是一个内部变量,用于保存发生错误时的操作。
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