如何理解我的vb反编译器反编译的内容

时间:2017-06-20 18:23:20

标签: vb.net decompiling

好的,伙计们,我已经反编译了一个反编译此解决方案的程序。 有人可以翻译这个解决方案,因为我不知道那是什么。语言是VB.net

  • 结构proizvod
  • indeks是index
  • kriterij是常态
  • proizvod是产品
  • prodaja正在销售
  • regija是地区
  • sveprodaje是所有出售的产品
  • trosak is charge

这是代码:

    Public Sub konsolidiraj(ByVal kriterij As Integer)
        Dim num As Integer
        Dim proizvodArray As Form1.Proizvod()
        Dim num1 As Integer
        If (kriterij = 0) Then
            Dim upperBound As Integer = Me.sveProdaje.GetUpperBound(0)
            For i As Integer = 0 To upperBound
                Dim prodajaArray As Form1.Prodaja() = Me.sveProdaje
                Dim num2 As Integer = i
                Dim num3 As Integer = Me.vratiIndeks(prodajaArray(num2).naziv)
                num = prodajaArray(num2).kolicina
                If (Operators.CompareString(prodajaArray(num2).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray(num2).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray(num2).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 1) Then
            Dim upperBound1 As Integer = Me.sveProdaje.GetUpperBound(0)
            For j As Integer = 0 To upperBound1
                Dim prodajaArray1 As Form1.Prodaja() = Me.sveProdaje
                Dim num4 As Integer = j
                Dim num5 As Integer = Me.vratiIndeks(prodajaArray1(num4).naziv)
                num = prodajaArray1(num4).prihod
                If (Operators.CompareString(prodajaArray1(num4).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray1(num4).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray1(num4).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 2) Then
            Dim upperBound2 As Integer = Me.sveProdaje.GetUpperBound(0)
            For k As Integer = 0 To upperBound2
                Dim prodajaArray2 As Form1.Prodaja() = Me.sveProdaje
                Dim num6 As Integer = k
                Dim num7 As Integer = Me.vratiIndeks(prodajaArray2(num6).naziv)
                num = prodajaArray2(num6).trosak
                If (Operators.CompareString(prodajaArray2(num6).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray2(num6).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray2(num6).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 3) Then
            Dim upperBound3 As Integer = Me.sveProdaje.GetUpperBound(0)
            For l As Integer = 0 To upperBound3
                Dim prodajaArray3 As Form1.Prodaja() = Me.sveProdaje
                Dim num8 As Integer = l
                Dim num9 As Integer = Me.vratiIndeks(prodajaArray3(num8).naziv)
                num = prodajaArray3(num8).dobit
                If (Operators.CompareString(prodajaArray3(num8).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray3(num8).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray3(num8).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
    End Sub

1 个答案:

答案 0 :(得分:0)

我所能做的就是让你知道VB字符串相等运算符与C#有一些语义差异,并做了一些事情。如果指定了Option Compare Text选项,如果它们的外壳不匹配,它就能够将字符串视为相等。因此,您看到的Operators.CompareString()调用是工作中的字符串相等运算符。

当两者相等时,运算符返回0,因此当您看到

等代码时
If (Operators.CompareString(prodajaArray(num2).regija, "East", False) = 0) Then

这意味着最初编写的代码是

Option Compare Binary    ' At the top of the file. But this is implied if it isn't specified.
' Skip down to a method for the following code.
If prodajaArray(num2).regija = "East" Then

如果已指定Option Compare Text,则最后一部分将显示为"East", True) = 0) Then