首页
社区
课程
招聘
[求助].Net KeygenMe
发表于: 2009-10-20 13:59 4564

[求助].Net KeygenMe

2009-10-20 13:59
4564
。NET程序

困惑算法

找到钥匙,我可以使用强力攻击?

帮助...

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 83
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
源码能看到啊,把这些源码复制到vs的一个简单例子,测试它,看看吧
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim str As String = ""
    Dim str2 As String = ""
    Dim str3 As String = ""
    Dim ytrewq As New ytrewq
    If ((((Me.textBox1.Text.Length >= 5) AndAlso (Me.textBox1.Text.Length <= &H1B)) AndAlso ((Me.textBox2.Text.Length = &H1A) AndAlso (Me.textBox2.Text.Chars(8) = "-"c))) AndAlso (Me.textBox2.Text.Chars(&H11) = "-"c)) Then
        Dim i As Integer
        For i = 0 To 8 - 1
            str = (str & Me.textBox2.Text.Chars(i))
        Next i
        Dim num As UInt32 = Convert.ToUInt32(str, &H10)
        Dim j As Integer
        For j = 9 To &H11 - 1
            str2 = (str2 & Me.textBox2.Text.Chars(j))
        Next j
        Dim num2 As UInt32 = Convert.ToUInt32(str2, &H10)
        Dim k As Integer
        For k = &H12 To &H1A - 1
            str3 = (str3 & Me.textBox2.Text.Chars(k))
        Next k
        Dim fsfsdf As UInt32 = Convert.ToUInt32(str3, &H10)
        Dim num5 As UInt32 = ytrewq.qwerty(Form1.dfgsf(Me.textBox1.Text))
        Dim hashCode As UInt32 = DirectCast(Me.textBox1.Text.GetHashCode, UInt32)
        fsfsdf = (fsfsdf Xor hashCode)
        Me.yreee(0) = num
        Me.yreee(1) = num2
        Me.yreee(2) = num
        Me.yreee(3) = num2
        If ((Me.vxzzz(Me.yreee, Me.ewrrr, &H8FFE2225, fsfsdf) AndAlso (Me.yreee(2) = hashCode)) AndAlso (Me.yreee(3) = num5)) Then
            MessageBox.Show("Congratulations, mate!", "Fine!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        End If
    End If
End Sub
2009-10-20 14:47
0
雪    币: 114
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
If ((Me.vxzzz(Me.yreee, Me.ewrrr, &H8FFE2225, fsfsdf) 
AndAlso (Me.yreee(2) = hashCode)) AndAlso (Me.yreee(3) = num5)) Then


该功能是非常复杂的 function : vxzzz()

测试,但为了找到正确的,关键是非常困难的。
2009-10-20 15:19
0
雪    币: 114
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
public class ytrewq
        {
            // Fields
            private uint[] tqepq;

            // Methods
            public ytrewq()
            {
            uint num = 0xbaadf00d;
            this.tqepq = new uint[0x100];
            uint num2 = 0;
            for (uint i = 0; i < this.tqepq.Length; i++)
            {
                num2 = i;
                for (int j = 8; j > 0; j--)
                {
                    if ((num2 & 1) == 1)
                    {
                        num2 = (num2 >> 1) ^ num;
                    }
                    else
                    {
                        num2 = num2 >> ((byte) (num / num));
                    }
                }
                this.tqepq[i] = num2;
            }
            }

            public uint qwerty(byte[] bytes)
            {
                uint num = 0;
                num = ~num;
                for (int i = 0; i < bytes.Length; i++)
                {
                    byte index = (byte)((num & 0xff) ^ bytes[i]);
                    num = (num >> 8) ^ this.tqepq[index];
                }
                return ~num;
            }
        }


public static byte[] dfgsf(string str)
        {
            ASCIIEncoding encoding = new ASCIIEncoding();
            return encoding.GetBytes(str);
        }


private void button3_Click(object sender, EventArgs e)
        {
                string str = "";
                string str2 = "";
                string str3 = "";


                uint[] yreee = new uint[4];
                uint[] ewrrr = new uint[6];

                ytrewq ytrewq = new ytrewq();

                for (int i = 0; i < 8; i++)
                {
                    str = str + this.textBox2.Text[i];
                }
                uint num = Convert.ToUInt32(str, 0x10);
                for (int j = 8; j < 0x10; j++)
                {
                    str2 = str2 + this.textBox2.Text[j];
                }
                uint num2 = Convert.ToUInt32(str2, 0x10);
                for (int k = 0x10; k < 0x18; k++)
                {
                    str3 = str3 + this.textBox2.Text[k];
                }
                uint fsfsdf = Convert.ToUInt32(str3, 0x10);
                uint num5 = ytrewq.qwerty(dfgsf(this.textBox1.Text));
                uint hashCode = (uint)this.textBox1.Text.GetHashCode();
                fsfsdf ^= hashCode;
                yreee[0] = num;
                yreee[1] = num2;
                yreee[2] = num;
                yreee[3] = num2;

                if ((this.vxzzz(yreee, ewrrr, 0x8ffe2225, fsfsdf) && (yreee[2] == hashCode)) && (yreee[3] == num5))
                {
                    MessageBox.Show(textBox2.Text);
                }
                else
                {
                    MessageBox.Show("error");

                }
            }


private bool vxzzz(uint[] rwerqw, uint[] kgtsdfs, uint pgdsfa, uint fsfsdf)
        {
            pgdsfa ^= fsfsdf;
            uint num = (pgdsfa % 0x39) - 1;
            uint num10 = rwerqw[0];
            uint num11 = rwerqw[1];
            uint num6 = num;
            uint num2 = pgdsfa << ((byte)(0x61 ^ (num + 0x44)));
            if (num != 0)
            {
                while (num-- > 0)
                {
                    uint num5 = num6 / 0x10;
                    uint num3 = num10 << ((byte)(num6 / 8));
                    uint num4 = num10 >> (3 + ((byte)num5));
                    uint num7 = (num6 / 4) + 3;
                    uint num9 = num7;
                    num7 = kgtsdfs[(int)((IntPtr)((num2 >> ((byte)num7)) % 4))];
                    uint num8 = num2 + num7;
                    num11 -= (((num3 ^ num4) + num10) ^ num8) - num;
                    num2 -= pgdsfa;
                    num11 -= num;
                    num3 = num11 << (((byte)(num9 + 1)) ^ 8);
                    num4 = num11 >> (((byte)(((num6 / 2) - num9) + 0x17)) ^ 0x19);
                    if (num == num6)
                    {
                        num11 ^= num;
                    }
                    if (num == ((num6 / 2) + (num9 ^ 0x1b)))
                    {
                        num9 = (num3 ^ num4) + (num11 ^ num);
                    }
                    else
                    {
                        num9 = (num3 ^ num4) + num11;
                    }
                    num10 -= num9 ^ (num2 + kgtsdfs[(int)((IntPtr)(num2 & 3))]);
                }
                rwerqw[0] = num10 ^ 4;
                rwerqw[1] = num11 ^ 7;
                rwerqw[2] = rwerqw[1] ^ ((byte)(((num6 + 1) / 3) - 4));
                rwerqw[3] = rwerqw[0] ^ ((byte)(((num6 - 0x15) + 1) ^ 8));
                rwerqw[0] ^= kgtsdfs[4];
                rwerqw[1] ^= kgtsdfs[5];
                return true;
            }
            return false;
        }


//////////////////////////////////////////////////////////
名字: sampaal

密码 : 111111112111111131111111 (dec 24)
//////////////////////////////////////////////////////////

if ((this.vxzzz(yreee, ewrrr, 0x8ffe2225, fsfsdf) && (yreee[2] == hashCode)) && (yreee[3] == num5))

为了找到关键,这条线必须是正确的

我如何获取正确的关键 ?
2009-10-23 14:57
0
雪    币: 1137
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
.net的程序能patch就patch了...除非是想学习的他的算法...那就得认认真真的分析..然后写出注册机..呵呵

纯属个人意见
2009-11-3 20:18
0
游客
登录 | 注册 方可回帖
返回
//