首页
社区
课程
招聘
[原创]一个CrackMe
发表于: 2010-9-17 15:11 6319

[原创]一个CrackMe

2010-9-17 15:11
6319
用VB写的,不会设计算法,算法写的一团糟。无壳

虽然如此,还是发出来给大家蹂躏下吧。

破完,有需要源码的可以  mail:hoy0a1d@vip.qq.com

源码附到附件中,以下为keygen源码

Function keyx(user As String) As Double
    Dim a, b, c, d, e As Integer
    Dim sn1, sn2, sn3, sn4, snx, sny, sn As Double
    a = CInt(Mid(user, 1, 2))
    b = CInt(Mid(user, 3, 2))
    c = CInt(Mid(user, 5, 2))
    d = CInt(Mid(user, 7, 2))
    e = CInt(Mid(user, 9, 2))
    
    If (a Mod 2) = 0 And (b Mod 2) <> 0 Then
        sn1 = (a ^ 2) Xor (b ^ 2)
    Else
        sn1 = (a ^ 2) Or (b ^ 2)
    End If
   
    If (b Mod 2) = 0 And (c Mod 2) <> 0 Then
        sn2 = (b ^ 2) Xor (c ^ 2)
    Else
        sn2 = (b ^ 2) Or (c ^ 2)
    End If

    If (c Mod 2) = 0 And (d Mod 2) <> 0 Then
        sn3 = (c ^ 2) Xor (d ^ 2)
    Else
        sn3 = (c ^ 2) Or (d ^ 2)
    End If
    
    If (d Mod 2) = 0 And (e Mod 2) <> 0 Then
        sn4 = (d ^ 2) Xor (e ^ 2)
    Else
        sn4 = (d ^ 2) Or (e ^ 2)
    End If
    
    If (sn1 Mod 2) = 0 Then
        sn1 = sn1 + 2010
    Else
        sn1 = sn1 + 365
    End If

    If (sn2 Mod 2) = 0 Then
        sn2 = sn2 + 2010
    Else
        sn2 = sn2 + 365
    End If

    If (sn3 Mod 2) = 0 Then
        sn3 = sn3 + 2010
    Else
        sn3 = sn3 + 365
    End If

    If (sn4 Mod 2) = 0 Then
        sn4 = sn4 + 2010
    Else
        sn4 = sn4 + 365
    End If

    snx = (sn1 + sn2 + sn3 + sn4) * 2010
    sny = snx + 8424501
    If (sny Mod 2) = 0 Then
        sn = snx * 2 + sny * 365
    Else
        sn = snx - 1 + snx + sny * 2010
    End If

    keyx = (sn + sn1 + sn2 + sn3 + sn4) ^ 2
End Function

Function keyy(name As String) As Double
    Dim a1, a2, a3, a4 As Integer
    Dim s1, s2, s3, sx, sy, s As Double
    a1 = CInt(Mid(name, 1, 2))
    a2 = CInt(Mid(name, 3, 2))
    a3 = CInt(Mid(name, 5, 2))
    a4 = CInt(Mid(name, 7, 2))
    s1 = (a1 ^ 2) Or (a2 ^ 2)
    s2 = (a2 ^ 2) Or (a3 ^ 2)
    s3 = (a3 ^ 2) Or (a4 ^ 2)
    
    If (a1 Mod 2) = 0 And (a2 Mod 2) <> 0 Then
        s1 = (a1 ^ 2) Or (a2 ^ 2)
    Else
        s1 = (a1 ^ 2) Xor (a2 ^ 2)
    End If
    
    If (a2 Mod 2) = 0 And (a3 Mod 2) <> 0 Then
        s2 = (a2 ^ 2) Or (a3 ^ 2)
    Else
        s2 = (a2 ^ 2) Xor (a3 ^ 2)
    End If
    
    If (a3 Mod 2) = 0 And (a4 Mod 2) <> 0 Then
        s3 = (a3 ^ 2) Or (a4 ^ 2)
    Else
        s3 = (a3 ^ 2) Xor (a4 ^ 2)
    End If
    
    If (s1 Mod 2) = 0 Then
        s1 = s1 + 2010
    Else
        s1 = s1 + 365
    End If

    If (s2 Mod 2) = 0 Then
        s2 = s2 + 2010
    Else
        s2 = s2 + 365
    End If

    If (s3 Mod 2) = 0 Then
        s3 = s3 + 2010
    Else
        s3 = s3 + 365
    End If

    sx = (s1 + s2 + s3 + 2010) ^ 2
    sy = (sx + CLng(name)) + 365
    If (sy Mod 2) = 0 Then
        s = sx * 2 + sy
    Else
        s = sx - 1 + sx + sy * 2
    End If
    keyy = (s + s1 + s2 + s3) ^ 2
End Function

Private Sub Command1_Click()
    Dim ss As Double
    If Len(Text1.Text) = 0 Then
        MsgBox "请输入机器码。", vbCritical, "提示"
    ElseIf Len(Text1.Text) >= 8 And Len(Text1.Text) < 10 Then
        ss = keyy(Text1.Text)
        Text2.Text = Sqr(ss) + Val(Text1.Text)
    ElseIf Len(Text1.Text) >= 10 Then
        ss = keyx(Text1.Text)
        Text2.Text = Sqr(ss) + Val(Text1.Text)
    Else
    End If
End Sub

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 421
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
先来个爆的!
上传的附件:
  • d.jpg (15.39kb,226次下载)
2010-9-17 15:21
0
雪    币: 3480
活跃值: (246)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
呵呵  ,  等你分析结果!
2010-9-17 18:53
0
雪    币: 695
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
0040484D   .  FF91 F8060000 call    dword ptr [ecx+6F8]  一个算法call

算法部分:
004048C4   .  FF15 08114000 call    dword ptr [<&MSVBVM60.#581>]     ;  MSVBVM60.rtcR8ValFromBstr
004048CA   .  8B16          mov     edx, dword ptr [esi]
004048CC   .  56            push    esi
004048CD   .  DD9D 44FFFFFF fstp    qword ptr [ebp-BC]
004048D3   .  FF92 00030000 call    dword ptr [edx+300]
004048D9   .  50            push    eax
004048DA   .  8D45 D4       lea     eax, dword ptr [ebp-2C]
004048DD   .  50            push    eax
004048DE   .  FF15 4C104000 call    dword ptr [<&MSVBVM60.__vbaObjSe>;  MSVBVM60.__vbaObjSet
004048E4   .  8BF0          mov     esi, eax
004048E6   .  8D55 E0       lea     edx, dword ptr [ebp-20]
004048E9   .  52            push    edx
004048EA   .  56            push    esi
004048EB   .  8B0E          mov     ecx, dword ptr [esi]
004048ED   .  FF91 A0000000 call    dword ptr [ecx+A0]
004048F3   .  85C0          test    eax, eax
004048F5   .  DBE2          fclex
004048F7   .  7D 0E         jge     short 00404907
004048F9   .  68 A0000000   push    0A0
004048FE   .  68 6C214000   push    0040216C
00404903   .  56            push    esi
00404904   .  50            push    eax
00404905   .  FFD7          call    edi
00404907   >  8B45 E0       mov     eax, dword ptr [ebp-20]
0040490A   .  68 00000040   push    40000000
0040490F   .  6A 00         push    0
00404911   .  50            push    eax
00404912   .  FF15 08114000 call    dword ptr [<&MSVBVM60.#581>]     ;  MSVBVM60.rtcR8ValFromBstr
00404918   .  DCA5 44FFFFFF fsub    qword ptr [ebp-BC]         ★serial和machine code 做减法
0040491E   .  83EC 08       sub     esp, 8
00404921   .  DFE0          fstsw   ax
00404923   .  A8 0D         test    al, 0D
00404925   .  0F85 5C010000 jnz     00404A87
0040492B   .  DD1C24        fstp    qword ptr [esp]
0040492E   .  FF15 C8104000 call    dword ptr [<&MSVBVM60.__vbaPower>;  MSVBVM60.__vbaPowerR8
00404934   .  DC65 E4       fsub    qword ptr [ebp-1C]   ★减去第一个算法call的结果,结果要等于0
00404937   .  DFE0          fstsw   ax
00404939   .  A8 0D         test    al, 0D
0040493B   .  0F85 46010000 jnz     00404A87
00404941   .  FF15 60104000 call    dword ptr [<&MSVBVM60.__vbaFpR8>>;  MSVBVM60.__vbaFpR8
00404947   .  DC1D 40114000 fcomp   qword ptr [401140]
0040494D   .  DFE0          fstsw   ax
0040494F   .  F6C4 40       test    ah, 40
00404952   .  74 07         je      short 0040495B     ★关键跳
00404954   .  B8 01000000   mov     eax, 1
00404959   .  EB 02         jmp     short 0040495D

大概看了下,不知道对不对,第一个算法call的内容实在是。。。
2010-9-17 19:29
0
雪    币: 472
活跃值: (52)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
5152535455
52659337224
2010-9-17 20:32
0
雪    币: 3480
活跃值: (246)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
4楼分析的部分算法是正确的
2010-9-20 16:23
0
雪    币: 3480
活跃值: (246)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
5楼给出的ID和SN也是正确的

具体的算法期待大家来分析
2010-9-20 16:24
0
雪    币: 3480
活跃值: (246)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
呵呵   10天了    补上   VB源码和注册机源码
2010-9-27 20:58
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
H蜀黍
2010-10-5 12:18
0
游客
登录 | 注册 方可回帖
返回
//