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
敬请方家指正!!!
呵呵,我来占第一个沙发,老师出教程了,好感谢。 好文章!!
页:
[1]