GGLHY 发表于 2014-1-29 11:45:56

MyDataGuard v1.0算法分析及源码

                                             MyDataGuard v1.0算法分析及源码
      庆贺论坛十周年!{:victory:}


       一般情况下我不公开国软,但作者自己在远景论坛贴出了注册机,所以我想在这里贴出分析应该不会损及作者的利益吧{:lol:}


软件的算法很简单,而且是明码比较。不过需要.net2.0的支持~~(直接用.net的反编译软件一看,算法一目了然)


      不过,这次我们用OD看看,找到算法CALL:

011BF86E    8BD3            MOV EDX,EBX
011BF870    8BCE            MOV ECX,ESI
011BF872    E8 056D2700   CALL 0143657C                            ; 算法CALL
011BF877    85C0            TEST EAX,EAX
011BF879    74 5A         JE SHORT 011BF8D5



我们进去看看。

F7后:011BF92F    0FB74456 0C   MOVZX EAX,WORD PTR DS:    ; 申请码第一位
011BF934    894491 08       MOV DWORD PTR DS:,EAX
011BF938    83C2 01         ADD EDX,0x1
011BF93B    83FA 0F         CMP EDX,0xF
011BF93E^ 7C E7         JL SHORT 011BF927
011BF940    6971 08 A000000>IMUL ESI,DWORD PTR DS:,0xA0   ; 申请码第一位 * A0
011BF947    6B41 14 50      IMUL EAX,DWORD PTR DS:,0x50    ; 申请码第4位 *50
011BF94B    03F0            ADD ESI,EAX                              ; + ,=31B0
011BF94D    8B41 20         MOV EAX,DWORD PTR DS:          ; 申请码第7位
011BF950    8D0480          LEA EAX,DWORD PTR DS:         ; *5
011BF953    C1E0 03         SHL EAX,0x3                              ; *8
011BF956    03F0            ADD ESI,EAX                              ; 820+31b0 =39D0
011BF958    8B41 2C         MOV EAX,DWORD PTR DS:          ; 申请码第10位
011BF95B    8D0480          LEA EAX,DWORD PTR DS:         ; *5
011BF95E    C1E0 02         SHL EAX,0x2                              ; *4
011BF961    03F0            ADD ESI,EAX                              ; 3c0 + 39D0 =3d90
011BF963    8B41 38         MOV EAX,DWORD PTR DS:          ; 申请码第13位
011BF966    8D0480          LEA EAX,DWORD PTR DS:         ; *5
011BF969    03C0            ADD EAX,EAX                              ; *2
011BF96B    03F0            ADD ESI,EAX                              ; 3f2 + 3D90=4182
011BF96D    8BFE            MOV EDI,ESI
011BF96F    C1FF 1F         SAR EDI,0x1F                           ; SAR 1F~~ =0了?
011BF972    6941 0C AA00000>IMUL EAX,DWORD PTR DS:,0xAA   ; 申请码第2位 *AA
011BF979    6B51 18 5A      IMUL EDX,DWORD PTR DS:,0x5A    ; 申请码第5位 *5A
011BF97D    03C2            ADD EAX,EDX                              ; 406a + 2328=6392
011BF97F    6B51 24 32      IMUL EDX,DWORD PTR DS:,0x32    ; 申请码第8位*32=960
011BF983    03C2            ADD EAX,EDX                              ; 960 + 6392=6CF2
011BF985    6B51 30 1E      IMUL EDX,DWORD PTR DS:,0x1E    ; 申请码第11位*1E=b7c
011BF989    03C2            ADD EAX,EDX                              ; b7c + 6cf2=786E
011BF98B    8B51 3C         MOV EDX,DWORD PTR DS:          ; 申请码第14位
011BF98E    8D1492          LEA EDX,DWORD PTR DS:         ; *5
011BF991    C1E2 02         SHL EDX,0x2                              ; *4
011BF994    03C2            ADD EAX,EDX                              ; 460 + 786e =7cce
011BF996    99            CDQ
011BF997    895424 04       MOV DWORD PTR SS:,EDX
011BF99B    8BE8            MOV EBP,EAX                              ; 7CCE
011BF99D    6941 10 B400000>IMUL EAX,DWORD PTR DS:,0xB4    ; 申请码第3位 *B4
011BF9A4    6B51 1C 64      IMUL EDX,DWORD PTR DS:,0x64    ; 申请码第6位 *64
011BF9A8    03C2            ADD EAX,EDX                              ; 2814 + 1450=3c64
011BF9AA    6B51 28 3C      IMUL EDX,DWORD PTR DS:,0x3C    ; 申请码第9位 *3C
011BF9AE    03C2            ADD EAX,EDX                              ; C30 + 3c64=4894
011BF9B0    8B51 34         MOV EDX,DWORD PTR DS:          ; 申请码第12位
011BF9B3    8D1492          LEA EDX,DWORD PTR DS:         ; *5
011BF9B6    C1E2 03         SHL EDX,0x3                              ; *8
011BF9B9    03C2            ADD EAX,EDX                              ; 4894 + f50 =57e4
011BF9BB    6B51 40 1E      IMUL EDX,DWORD PTR DS:,0x1E    ; 申请码第15位 *1E =b7c
011BF9BF    03C2            ADD EAX,EDX                              ; B7C + 57E4=6360
011BF9C1    99            CDQ
011BF9C2    895424 0C       MOV DWORD PTR SS:,ED








算法如此简单,这里就不总结了。{:biggrin:}



附写的很烂的注册机源码:
A.   VB版Private Sub Image1_Click()
MsgBox "   本“MyDataGuard v1.0算法注册机”只为学习和研究而作,不得用于非法用途!为尊重作者的版权,支持国软,请在24小时内删除本注册机以及由此得到的注册信息。注册信息保存在注册表:HKEY_LOCAL_MACHINE\SOFTWARE\MyDataGuard下。谢谢合作!", vbInformation, "重要声明   by GGLHY"
End Sub

Private Sub Text1_Change()
Dim sqh, xlh As String

If Text1.Text = "" Or Len(Text1.Text) <> 15 Then
Text2.Text = ""
Else

sqh = Text1.Text
Q1 = Hex(((Asc(Mid(sqh, 1, 1)) * 160) + Asc(Mid(sqh, 4, 1)) * 80) + Asc(Mid(sqh, 7, 1)) * 40 + Asc(Mid(sqh, 10, 1)) * 20 + (Asc(Mid(sqh, 13, 1)) * 10))
<span style="line-height: 1.5;">Q2 = Hex(((Asc(Mid(sqh, 2, 1)) * 170) + Asc(Mid(sqh, 5, 1)) * 90) + Asc(Mid(sqh, 8, 1)) * 50 + Asc(Mid(sqh, 11, 1)) * 30 + (Asc(Mid(sqh, 14, 1)) * 20))</span>
<span style="line-height: 1.5;">Q3 = Hex(((Asc(Mid(sqh, 3, 1)) * 180) + Asc(Mid(sqh, 6, 1)) * 100) + Asc(Mid(sqh, 9, 1)) * 60 + Asc(Mid(sqh, 12, 1)) * 40 + (Asc(Mid(sqh, 15, 1)) * 30))</span>

Text2.Text = LCase(Q1 & "-" & Q2 & "-" & Q3)

End IF


敬请方家指正!!!


逍遥枷锁 发表于 2014-1-29 17:07:04

呵呵,我来占第一个沙发,老师出教程了,好感谢。

飘云 发表于 2014-2-3 13:49:35

好文章!!
页: [1]
查看完整版本: MyDataGuard v1.0算法分析及源码