0

リフレクターを使用して vb.net アプリケーションを逆コンパイルしました

すべての文字列は次の方法で暗号化されます。

Public Shared Function smethod_0(ByVal string_0 As String) As String
    Dim length As Integer = string_0.Length
    Dim chArray As Char() = New Char(length  - 1) {}
    Dim i As Integer
    For i = 0 To chArray.Length - 1
        Dim ch As Char = string_0.Chars(i)
        Dim num3 As Byte = CByte((ch Xor (length - i)))
        Dim num4 As Byte = CByte(((ch >> 8) Xor i))
        chArray(i) = DirectCast(((num4 << 8) Or num3), Char)
    Next i
    Return String.Intern(New String(chArray))
End Function

このメソッドは、次のような入力文字列を受け取ります。

"j" & ChrW(354) & ChrW(623) & ChrW(868)

読み取り可能な文字列を返します。

このコードを vb.net または c# で変換するにはどうすればよいですか?

Vb.net コンパイラは、xor が char/int の組み合わせに対して定義されていないため、このコードが正しくないことを訴えます。

4

2 に答える 2

0

C#バージョン(教育上の理由のみ-可能な限り同様のコードを保持):

public static string encrypt(string s)
{
    int length = s.Length, i = 0;
    char[] chArray = new char[length];
    byte b1, b2;
    char ch;
    for (i = 0; i <= chArray.Length - 1; i++)
    {
        ch = s[i];
        b1 = Convert.ToByte((ch ^ (length - i)));
        b2 = Convert.ToByte(((ch >> 8) ^ i));
        chArray[i] = (char)((b2 << 8) | b1);
    }
    return string.Intern(new string(chArray));
}
于 2012-06-20T09:33:03.910 に答える
0

私はこのように解決しました:

    public static string encrypt(string string_0)
    {
        int length = string_0.Length;
        char[] chArray = new char[length];
        for (int i = 0; i < chArray.Length; i++)
        {
            char ch = string_0[i];
            byte num3 = (byte)(ch ^ (length - i));
            byte num4 = (byte)((ch >> 8) ^ i);
            chArray[i] = (char)((num4 << 8) | num3);
        }

        File.AppendAllText("decript.txt", Environment.NewLine + string_0 + "  =  " + string.Intern(new string(chArray)));

return string.Intern(new string(chArray));

    }

手伝ってくれてありがとう

于 2012-06-21T00:39:05.067 に答える