好友
阅读权限25
听众
最后登录1970-1-1
|
楼主|
expasy
发表于 2015-11-29 23:18
本帖最后由 expasy 于 2015-11-30 13:07 编辑
算法分析
1、先用文字描述一下把:
Sn好像和用户名没有关系
Sn长度39位
Sn的后面19位是根据前20位以及一个字符串“Jobosharevideoconverter2008.07.28”通过一定的变化,然后取MD5值,最后将md5值取奇数位连起来,每4位插入一个’-‘符号
比如前20位是”11111111111111111111“
和字符串“Jobosharevideoconverter2008.07.28”连起来就是“11111111111111111111Jobosharevideoconverter2008.07.28”---------------------【字符串1】
处理字符串“Jobosharevideoconverter2008.07.28”
取出它的第(3*i+1) 位(i=0,1,2,3.....,字符串长度)位,
“Jobosharevideoconverter2008.07.28”=
4A 6F 62 6F 73 68 61 72 65 76 69 64 65 6F 63 6F 6E 76 65 72 74 65 72 32 30 30 38 2E 30 37 2E 32 38
取出它的第(3*i+1) 位(i=0,1,2,3.....,字符串长度)位就是
4A 6F 61 76 65 6F 65 65 30 2E 2E
剩下的是
6F 62 73 68 72 65 69 64 6F 63 6E 76 72 74 72 32 30 38 30 37 32 38
连起来
4A 6F 61 76 65 6F 65 65 30 2E 2E 6F 62 73 68 72 65 69 64 6F 63 6E 76 72 74 72 32 30 38 30 37 32 38
然后在每位后面插入数字,该数字就是这些字符在原始字符串中的位置序号,结果如下面(hex):
4A 01 6F 04 61 07 76 0A 65 0D 6F 10 65 13 65 16 30 19 2E 1C 2E 1F 6F 02 62 03 73 05 68 06 72 08
65 09 69 0B 64 0C 6F 0E 63 0F 6E 11 76 12 72 14 74 15 72 17 32 18 30 1A 38 1B 30 1D 37 1E 32 20
38 21
然后这一窜东西,前面插入个0x31,后面插入两个0x30,这个也是算出来的,变成这样:
31 4A 01 6F 04 61 07 76 0A 65 0D 6F 10 65 13 65 16 30 19 2E 1C 2E 1F 6F 02 62 03 73 05 68 06 72
08 65 09 69 0B 64 0C 6F 0E 63 0F 6E 11 76 12 72 14 74 15 72 17 32 18 30 1A 38 1B 30 1D 37 1E 32
20 38 21 30 30
后面在连接上【字符串1】=“11111111111111111111Jobosharevideoconverter2008.07.28”,就是(hex):
31 4A 01 6F 04 61 07 76 0A 65 0D 6F 10 65 13 65 16 30 19 2E 1C 2E 1F 6F 02 62 03 73 05 68 06 72
08 65 09 69 0B 64 0C 6F 0E 63 0F 6E 11 76 12 72 14 74 15 72 17 32 18 30 1A 38 1B 30 1D 37 1E 32
20 38 21 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 4A 6F 62 6F 73 68 61
72 65 76 69 64 65 6F 63 6F 6E 76 65 72 74 65 72 32 30 30 38 2E 30 37 2E 32 38 00 00
后面就简单了,这窜hex的字符串,取md5,就是
52bd778517b17c75a61a9eaf79a7d12a
最后将md5值取奇数位连起来,每4位插入一个’-‘符号就是Sn的后19位,对了要转大写字母。
SN= "111111111111111111115B78-1B77-A19A-7AD2"
2、然后是代码
[Asm] 纯文本查看 复制代码 0042F440 6A FF push -0x1 ; 算法
0042F442 68 2F2C4800 push videoenc.00482C2F ; 入口地址
0042F447 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
0042F44D |. 50 push eax
0042F44E |. 64:8925 00000>mov dword ptr fs:[0],esp
0042F455 |. 81EC A4000000 sub esp,0xA4
0042F45B |. A1 70694C00 mov eax,dword ptr ds:[0x4C6970]
0042F460 |. 53 push ebx
0042F461 |. 56 push esi
0042F462 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F466 |. 898424 A80000>mov dword ptr ss:[esp+0xA8],eax
0042F46D |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F473 |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F477 |. C78424 B40000>mov dword ptr ss:[esp+0xB4],0x0
0042F482 |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F488 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F48C |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F492 |. 8B0D FC904C00 mov ecx,dword ptr ds:[0x4C90FC] ; 赞H
0042F498 |. 8D4424 20 lea eax,dword ptr ss:[esp+0x20]
0042F49C |. 50 push eax
0042F49D |. C68424 B80000>mov byte ptr ss:[esp+0xB8],0x2
0042F4A5 |. E8 36AEFFFF call videoenc.0042A2E0
0042F4AA |. 8BC8 mov ecx,eax
0042F4AC |. 83C1 2C add ecx,0x2C
0042F4AF |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F4B5 |. 50 push eax ; |Subkey = 00000027 ???
0042F4B6 |. 68 01000080 push 0x80000001 ; |hKey = HKEY_CURRENT_USER
0042F4BB |. FF15 20804800 call dword ptr ds:[<&ADVAPI32.RegCreateK>; \RegCreateKeyA
0042F4C1 |. 85C0 test eax,eax
0042F4C3 |. 0F85 B1000000 jnz videoenc.0042F57A
0042F4C9 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F4CD |. 51 push ecx
0042F4CE |. 68 00020000 push 0x200
0042F4D3 |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F4D7 |. C74424 10 000>mov dword ptr ss:[esp+0x10],0x200
0042F4DF |. FF15 84834800 call dword ptr ds:[<&MFC71.#?GetBuffer@?>; mfc71.#?Preallocate@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5154
0042F4E5 |. 8B5424 24 mov edx,dword ptr ss:[esp+0x24] ; |
0042F4E9 |. 8B35 0C804800 mov esi,dword ptr ds:[<&ADVAPI32.RegQuer>; |advapi32.RegQueryValueExA
0042F4EF |. 50 push eax ; |Buffer = 00000027
0042F4F0 |. 6A 00 push 0x0 ; |pValueType = NULL
0042F4F2 |. 6A 00 push 0x0 ; |Reserved = NULL
0042F4F4 |. 68 98C44800 push videoenc.0048C498 ; |Name
0042F4F9 |. 52 push edx ; |hKey = 0x5598938
0042F4FA |. FFD6 call esi ; \RegQueryValueExA
0042F4FC |. 6A FF push -0x1 ; 用户名
0042F4FE |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F502 |. FF15 EC834800 call dword ptr ds:[<&MFC71.#?ReleaseBuff>; mfc71.#?ReleaseBuffer@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5403
0042F508 |. 8D4424 08 lea eax,dword ptr ss:[esp+0x8]
0042F50C |. 50 push eax
0042F50D |. 68 00020000 push 0x200
0042F512 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
0042F516 |. C74424 10 000>mov dword ptr ss:[esp+0x10],0x200
0042F51E |. FF15 84834800 call dword ptr ds:[<&MFC71.#?GetBuffer@?>; mfc71.#?Preallocate@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5154
0042F524 |. 8B4C24 24 mov ecx,dword ptr ss:[esp+0x24]
0042F528 |. 50 push eax
0042F529 |. 6A 00 push 0x0
0042F52B |. 6A 00 push 0x0
0042F52D |. 68 30114900 push videoenc.00491130 ; Serial
0042F532 |. 51 push ecx
0042F533 |. FFD6 call esi ; 根本就没有这项
0042F535 |. 6A FF push -0x1
0042F537 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F53B |. FF15 EC834800 call dword ptr ds:[<&MFC71.#?ReleaseBuff>; mfc71.#?ReleaseBuffer@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5403
0042F541 |. 8D5424 08 lea edx,dword ptr ss:[esp+0x8]
0042F545 |. 52 push edx
0042F546 |. 68 00020000 push 0x200
0042F54B |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F54F |. C74424 10 000>mov dword ptr ss:[esp+0x10],0x200
0042F557 |. FF15 84834800 call dword ptr ds:[<&MFC71.#?GetBuffer@?>; mfc71.#?Preallocate@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5154
0042F55D |. 50 push eax
0042F55E |. 8B4424 28 mov eax,dword ptr ss:[esp+0x28]
0042F562 |. 6A 00 push 0x0
0042F564 |. 6A 00 push 0x0
0042F566 |. 68 28114900 push videoenc.00491128 ; Code
0042F56B |. 50 push eax
0042F56C |. FFD6 call esi ; 加密过的注册码
0042F56E |. 6A FF push -0x1
0042F570 |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F574 |. FF15 EC834800 call dword ptr ds:[<&MFC71.#?ReleaseBuff>; mfc71.#?ReleaseBuffer@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5403
0042F57A |> 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F57E |. FF15 88834800 call dword ptr ds:[<&MFC71.#?IsEmpty@?$C>; mfc71.#?IsEmpty@?$CSimpleStringT@D$00@ATL@@QBE_NXZ_3934
0042F584 |. 84C0 test al,al
0042F586 |. BB 03000000 mov ebx,0x3
0042F58B |. 0F85 8C000000 jnz videoenc.0042F61D
0042F591 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F595 |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F59B |. 50 push eax
0042F59C |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F5A0 |. 51 push ecx
0042F5A1 |. E8 BAF3FFFF call videoenc.0042E960 ; call 解密准备,将字符串当16进制
0042F5A6 |. 83C4 08 add esp,0x8
0042F5A9 |. 8D4C24 34 lea ecx,dword ptr ss:[esp+0x34]
0042F5AD |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F5B4 |. E8 07EB0100 call videoenc.0044E0C0 ; call 解密用到的常数,
0042F5B9 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F5BD |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0x4
0042F5C5 |. FF15 80834800 call dword ptr ds:[<&MFC71.#?GetBuffer@?>; mfc71.#?GetBuffer@?$CSimpleStringT@D$00@ATL@@QAEPADXZ_2469
0042F5CB |. 50 push eax
0042F5CC |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F5D0 |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F5D6 |. 50 push eax
0042F5D7 |. 8D4C24 3C lea ecx,dword ptr ss:[esp+0x3C]
0042F5DB |. E8 E0EF0100 call videoenc.0044E5C0 ; call 解密(解密和加密是一个函数)
0042F5E0 |. 6A FF push -0x1
0042F5E2 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F5E6 |. FF15 EC834800 call dword ptr ds:[<&MFC71.#?ReleaseBuff>; mfc71.#?ReleaseBuffer@?$CSimpleStringT@D$00@ATL@@QAEXH@Z_5403
0042F5EC |. 8D5424 08 lea edx,dword ptr ss:[esp+0x8]
0042F5F0 |. 52 push edx
0042F5F1 |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F5F5 |. FF15 BC894800 call dword ptr ds:[<&MFC71.#??4?$CString>; mfc71.#??4?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@ABV01@@Z_781
0042F5FB |. 8D4C24 34 lea ecx,dword ptr ss:[esp+0x34]
0042F5FF |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F606 |. E8 25EB0100 call videoenc.0044E130
0042F60B |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F60F |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0x2
0042F617 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F61D |> 6A 14 push 0x14
0042F61F |. 8D4424 0C lea eax,dword ptr ss:[esp+0xC]
0042F623 |. 50 push eax
0042F624 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F628 |. FF15 B8894800 call dword ptr ds:[<&MFC71.#?Left@?$CStr>; mfc71.#?Left@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QBE?AV12@H@Z_3997
0042F62E |. 50 push eax
0042F62F |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F633 |. C68424 B80000>mov byte ptr ss:[esp+0xB8],0x5
0042F63B |. FF15 BC894800 call dword ptr ds:[<&MFC71.#??4?$CString>; mfc71.#??4?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@ABV01@@Z_781
0042F641 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F645 |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0x2
0042F64D |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F653 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F657 |. FF15 88834800 call dword ptr ds:[<&MFC71.#?IsEmpty@?$C>; mfc71.#?IsEmpty@?$CSimpleStringT@D$00@ATL@@QBE_NXZ_3934
0042F65D |. 84C0 test al,al
0042F65F |. 0F85 C0030000 jnz videoenc.0042FA25
0042F665 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F669 |. FF15 88834800 call dword ptr ds:[<&MFC71.#?IsEmpty@?$C>; mfc71.#?IsEmpty@?$CSimpleStringT@D$00@ATL@@QBE_NXZ_3934
0042F66F |. 84C0 test al,al
0042F671 |. 0F85 AE030000 jnz videoenc.0042FA25
0042F677 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F67B |. FF15 84824800 call dword ptr ds:[<&MFC71.#?GetLength@?>; mfc71.#?GetLength@?$CSimpleStringT@D$00@ATL@@QBEHXZ_2902
0042F681 |. 83F8 27 cmp eax,0x27 ; 注册码的长度和0x27(29)比较,不等就完蛋
0042F684 |. 0F85 9B030000 jnz videoenc.0042FA25
0042F68A |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F68E |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F694 |. 8B0D FC904C00 mov ecx,dword ptr ds:[0x4C90FC] ; 赞H
0042F69A |. E8 41ACFFFF call videoenc.0042A2E0
0042F69F |. 83C0 38 add eax,0x38
0042F6A2 |. 50 push eax
0042F6A3 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F6A7 |. FF15 BC894800 call dword ptr ds:[<&MFC71.#??4?$CString>; mfc71.#??4?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@ABV01@@Z_781
0042F6AD |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F6B1 |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F6B7 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F6BB |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0x6
0042F6C3 |. 33F6 xor esi,esi
0042F6C5 |. FF15 84824800 call dword ptr ds:[<&MFC71.#?GetLength@?>; mfc71.#?GetLength@?$CSimpleStringT@D$00@ATL@@QBEHXZ_2902
0042F6CB |. 85C0 test eax,eax
0042F6CD |. 7E 53 jle short videoenc.0042F722
0042F6CF |. 90 nop
0042F6D0 |> 8BC6 /mov eax,esi ; 处理字符串“Jobosharevideoconverter2008.07.28”的第一步
0042F6D2 |. 99 |cdq ; 好老的软件……-……2008.07.28
0042F6D3 |. 8BCB |mov ecx,ebx
0042F6D5 |. F7F9 |idiv ecx
0042F6D7 |. 85D2 |test edx,edx
0042F6D9 |. 75 38 |jnz short videoenc.0042F713
0042F6DB |. 56 |push esi
0042F6DC |. 8D4C24 14 |lea ecx,dword ptr ss:[esp+0x14]
0042F6E0 |. FF15 B8824800 |call dword ptr ds:[<&MFC71.#??A?$CSimpl>; mfc71.#?GetAt@?$CSimpleStringT@D$00@ATL@@QBEDH@Z_2451
0042F6E6 |. 8D4C24 0C |lea ecx,dword ptr ss:[esp+0xC]
0042F6EA |. 50 |push eax
0042F6EB |. FF15 98864800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@E@Z_909
0042F6F1 |. 8D46 01 |lea eax,dword ptr ds:[esi+0x1]
0042F6F4 |. 99 |cdq
0042F6F5 |. B9 FF000000 |mov ecx,0xFF
0042F6FA |. F7F9 |idiv ecx
0042F6FC |. 84D2 |test dl,dl
0042F6FE |. 885424 08 |mov byte ptr ss:[esp+0x8],dl
0042F702 |. 74 0F |je short videoenc.0042F713
0042F704 |. 8B5424 08 |mov edx,dword ptr ss:[esp+0x8]
0042F708 |. 52 |push edx
0042F709 |. 8D4C24 10 |lea ecx,dword ptr ss:[esp+0x10]
0042F70D |. FF15 98864800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@E@Z_909
0042F713 |> 8D4C24 10 |lea ecx,dword ptr ss:[esp+0x10]
0042F717 |. 46 |inc esi
0042F718 |. FF15 84824800 |call dword ptr ds:[<&MFC71.#?GetLength@>; mfc71.#?GetLength@?$CSimpleStringT@D$00@ATL@@QBEHXZ_2902
0042F71E |. 3BF0 |cmp esi,eax
0042F720 |.^ 7C AE \jl short videoenc.0042F6D0
0042F722 |> 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F726 |. 33F6 xor esi,esi
0042F728 |. FF15 84824800 call dword ptr ds:[<&MFC71.#?GetLength@?>; mfc71.#?GetLength@?$CSimpleStringT@D$00@ATL@@QBEHXZ_2902
0042F72E |. 85C0 test eax,eax
0042F730 |. 7E 52 jle short videoenc.0042F784
0042F732 |> 8BC6 /mov eax,esi ; 处理字符串“Jobosharevideoconverter2008.07.28”的第二步
0042F734 |. 99 |cdq
0042F735 |. 8BCB |mov ecx,ebx
0042F737 |. F7F9 |idiv ecx
0042F739 |. 85D2 |test edx,edx
0042F73B |. 74 38 |je short videoenc.0042F775
0042F73D |. 56 |push esi
0042F73E |. 8D4C24 14 |lea ecx,dword ptr ss:[esp+0x14]
0042F742 |. FF15 B8824800 |call dword ptr ds:[<&MFC71.#??A?$CSimpl>; mfc71.#?GetAt@?$CSimpleStringT@D$00@ATL@@QBEDH@Z_2451
0042F748 |. 8D4C24 0C |lea ecx,dword ptr ss:[esp+0xC]
0042F74C |. 50 |push eax
0042F74D |. FF15 98864800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@E@Z_909
0042F753 |. 8D46 01 |lea eax,dword ptr ds:[esi+0x1]
0042F756 |. 99 |cdq
0042F757 |. B9 FF000000 |mov ecx,0xFF
0042F75C |. F7F9 |idiv ecx
0042F75E |. 84D2 |test dl,dl
0042F760 |. 885424 08 |mov byte ptr ss:[esp+0x8],dl
0042F764 |. 74 0F |je short videoenc.0042F775
0042F766 |. 8B5424 08 |mov edx,dword ptr ss:[esp+0x8]
0042F76A |. 52 |push edx
0042F76B |. 8D4C24 10 |lea ecx,dword ptr ss:[esp+0x10]
0042F76F |. FF15 98864800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@E@Z_909
0042F775 |> 8D4C24 10 |lea ecx,dword ptr ss:[esp+0x10]
0042F779 |. 46 |inc esi
0042F77A |. FF15 84824800 |call dword ptr ds:[<&MFC71.#?GetLength@>; mfc71.#?GetLength@?$CSimpleStringT@D$00@ATL@@QBEHXZ_2902
0042F780 |. 3BF0 |cmp esi,eax
0042F782 |.^ 7C AE \jl short videoenc.0042F732
0042F784 |> 8D4C24 24 lea ecx,dword ptr ss:[esp+0x24]
0042F788 |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F78E |. 6A 01 push 0x1
0042F790 |. 8D4424 28 lea eax,dword ptr ss:[esp+0x28]
0042F794 |. 68 F8CE4800 push videoenc.0048CEF8 ; %d
0042F799 |. 50 push eax ; 处理的变成“d%”这种格式
0042F79A |. C68424 C00000>mov byte ptr ss:[esp+0xC0],0x7
0042F7A2 |. FF15 C4894800 call dword ptr ds:[<&MFC71.#?Format@?$CS>; mfc71.#?Format@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAAXPBDZZ_2322
0042F7A8 |. 83C4 0C add esp,0xC
0042F7AB |. 8D4C24 24 lea ecx,dword ptr ss:[esp+0x24]
0042F7AF |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F7B5 |. 50 push eax
0042F7B6 |. 6A 00 push 0x0
0042F7B8 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F7BC |. FF15 AC864800 call dword ptr ds:[<&MFC71.#?Insert@?$CS>; mfc71.#?Insert@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEHHPBD@Z_3850
0042F7C2 |. 8D4C24 28 lea ecx,dword ptr ss:[esp+0x28]
0042F7C6 |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F7CC |. 8D4C24 2C lea ecx,dword ptr ss:[esp+0x2C]
0042F7D0 |. FF15 E8894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_310
0042F7D6 |. 6A 00 push 0x0
0042F7D8 |. 8D4C24 2C lea ecx,dword ptr ss:[esp+0x2C]
0042F7DC |. 68 F8CE4800 push videoenc.0048CEF8 ; %d
0042F7E1 |. B3 09 mov bl,0x9
0042F7E3 |. 51 push ecx
0042F7E4 |. 889C24 C00000>mov byte ptr ss:[esp+0xC0],bl
0042F7EB |. FF15 C4894800 call dword ptr ds:[<&MFC71.#?Format@?$CS>; mfc71.#?Format@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAAXPBDZZ_2322
0042F7F1 |. 6A 00 push 0x0
0042F7F3 |. 8D5424 3C lea edx,dword ptr ss:[esp+0x3C]
0042F7F7 |. 68 F8CE4800 push videoenc.0048CEF8 ; %d
0042F7FC |. 52 push edx
0042F7FD |. FF15 C4894800 call dword ptr ds:[<&MFC71.#?Format@?$CS>; mfc71.#?Format@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAAXPBDZZ_2322
0042F803 |. 8D4424 44 lea eax,dword ptr ss:[esp+0x44]
0042F807 |. 50 push eax
0042F808 |. 8D4C24 44 lea ecx,dword ptr ss:[esp+0x44]
0042F80C |. 51 push ecx
0042F80D |. 8D5424 28 lea edx,dword ptr ss:[esp+0x28]
0042F811 |. 52 push edx
0042F812 |. E8 49F4FDFF call videoenc.0040EC60
0042F817 |. 83C4 24 add esp,0x24
0042F81A |. 50 push eax
0042F81B |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F81F |. C68424 B80000>mov byte ptr ss:[esp+0xB8],0xA
0042F827 |. FF15 CC894800 call dword ptr ds:[<&MFC71.#??Y?$CString>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@ABV?$CSimpleStringT@D$00@1@@Z_907
0042F82D |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F831 |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F838 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F83E |. 8D4424 18 lea eax,dword ptr ss:[esp+0x18]
0042F842 |. 50 push eax
0042F843 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
0042F847 |. FF15 D4894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@ABV01@@Z_297
0042F84D |. B3 0B mov bl,0xB
0042F84F |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F853 |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F85A |. FF15 B8844800 call dword ptr ds:[<&MFC71.#?MakeUpper@?>; mfc71.#?MakeUpper@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV12@XZ_4085
0042F860 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F864 |. FF15 94864800 call dword ptr ds:[<&MFC71.#?TrimLeft@?$>; mfc71.#?TrimLeft@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV12@XZ_6174
0042F86A |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F86E |. FF15 90864800 call dword ptr ds:[<&MFC71.#?TrimRight@?>; mfc71.#?TrimRight@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV12@XZ_6180
0042F874 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F878 |. FF15 88834800 call dword ptr ds:[<&MFC71.#?IsEmpty@?$C>; mfc71.#?IsEmpty@?$CSimpleStringT@D$00@ATL@@QBE_NXZ_3934
0042F87E |. 84C0 test al,al
0042F880 |. 74 0F je short videoenc.0042F891
0042F882 |. 68 38114900 push videoenc.00491138 ; joboshare
0042F887 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
0042F88B |. FF15 EC894800 call dword ptr ds:[<&MFC71.#??4?$CString>; mfc71.#??4?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@PBE@Z_785
0042F891 |> 8B0D FC904C00 mov ecx,dword ptr ds:[0x4C90FC] ; 赞H
0042F897 |. E8 44AAFFFF call videoenc.0042A2E0
0042F89C |. 83C0 38 add eax,0x38
0042F89F |. 50 push eax
0042F8A0 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
0042F8A4 |. 51 push ecx
0042F8A5 |. 8D5424 10 lea edx,dword ptr ss:[esp+0x10]
0042F8A9 |. 52 push edx
0042F8AA |. E8 B1F3FDFF call videoenc.0040EC60 ; 将SN的前20位和字符串“Jobosharevideoconverter2008.07.28”连起来
0042F8AF |. 83C4 0C add esp,0xC
0042F8B2 |. 50 push eax
0042F8B3 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F8B7 |. C68424 B80000>mov byte ptr ss:[esp+0xB8],0xC
0042F8BF |. FF15 CC894800 call dword ptr ds:[<&MFC71.#??Y?$CString>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@ABV?$CSimpleStringT@D$00@1@@Z_907
0042F8C5 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0042F8C9 |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F8D0 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F8D6 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F8DA |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F8E0 |. 50 push eax
0042F8E1 |. 8D4C24 70 lea ecx,dword ptr ss:[esp+0x70]
0042F8E5 |. E8 36EE0100 call videoenc.0044E720 ; call 最关键的地方,我还单步跟了好一会跟不出来,后来突然却发现是个常用的密码学的函数MD5
0042F8EA |. 8D4C24 6C lea ecx,dword ptr ss:[esp+0x6C]
0042F8EE |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0xD
0042F8F6 |. E8 65ED0100 call videoenc.0044E660
0042F8FB |. 50 push eax
0042F8FC |. 8D4C24 34 lea ecx,dword ptr ss:[esp+0x34]
0042F900 |. FF15 D0894800 call dword ptr ds:[<&MFC71.#??0?$CString>; mfc71.#??0?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@PBD@Z_304
0042F906 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F90A |. C68424 B40000>mov byte ptr ss:[esp+0xB4],0xE
0042F912 |. FF15 70844800 call dword ptr ds:[<&MFC71.#?Empty@?$CSi>; mfc71.#?Empty@?$CSimpleStringT@D$00@ATL@@QAEXXZ_2131
0042F918 |. 33F6 xor esi,esi
0042F91A |. 8D9B 00000000 lea ebx,dword ptr ds:[ebx]
0042F920 |> 56 /push esi ; 产生sn的后19位(产生的是20位)
0042F921 |. 8D4C24 34 |lea ecx,dword ptr ss:[esp+0x34]
0042F925 |. FF15 B8824800 |call dword ptr ds:[<&MFC71.#??A?$CSimpl>; mfc71.#?GetAt@?$CSimpleStringT@D$00@ATL@@QBEDH@Z_2451
0042F92B |. 8D4C24 0C |lea ecx,dword ptr ss:[esp+0xC]
0042F92F |. 50 |push eax
0042F930 |. FF15 98864800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@E@Z_909
0042F936 |. 8BC6 |mov eax,esi
0042F938 |. D1E8 |shr eax,1
0042F93A |. 40 |inc eax
0042F93B |. 25 03000080 |and eax,0x80000003
0042F940 |. 79 05 |jns short videoenc.0042F947
0042F942 |. 48 |dec eax
0042F943 |. 83C8 FC |or eax,-0x4
0042F946 |. 40 |inc eax
0042F947 |> 75 0F |jnz short videoenc.0042F958
0042F949 |. 68 08BD4800 |push videoenc.0048BD08 ; -
0042F94E |. 8D4C24 10 |lea ecx,dword ptr ss:[esp+0x10]
0042F952 |. FF15 C8894800 |call dword ptr ds:[<&MFC71.#??Y?$CStrin>; mfc71.#??Y?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV01@PBD@Z_911
0042F958 |> 83C6 02 |add esi,0x2
0042F95B |. 83FE 20 |cmp esi,0x20
0042F95E |.^ 7C C0 \jl short videoenc.0042F920
0042F960 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F964 |. FF15 B8844800 call dword ptr ds:[<&MFC71.#?MakeUpper@?>; mfc71.#?MakeUpper@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEAAV12@XZ_4085
0042F96A |. 6A 01 push 0x1
0042F96C |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F970 |. FF15 84824800 call dword ptr ds:[<&MFC71.#?GetLength@?>; 去掉最后一位(就是个‘-’)
0042F976 |. 48 dec eax
0042F977 |. 50 push eax
0042F978 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F97C |. FF15 A8864800 call dword ptr ds:[<&MFC71.#?Delete@?$CS>; mfc71.#?Delete@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAEHHH@Z_1916
0042F982 |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042F986 |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F98C |. 50 push eax
0042F98D |. 6A 00 push 0x0
0042F98F |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042F993 |. FF15 AC864800 call dword ptr ds:[<&MFC71.#?Insert@?$CS>; 和前面连起来,总共39位()
0042F999 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14] ; 内存注册机断下的位置
0042F99D |. FF15 F0894800 call dword ptr ds:[<&MFC71.#??B?$CSimple>; mfc71.#?GetString@?$CSimpleStringT@D$00@ATL@@QBEPBDXZ_3397
0042F9A3 |. 50 push eax
0042F9A4 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042F9A8 |. FF15 80884800 call dword ptr ds:[<&MFC71.#?Compare@?$C>; mfc71.#?Compare@?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QBEHPBD@Z_1482
0042F9AE |. F7D8 neg eax
0042F9B0 |. 1AC0 sbb al,al
0042F9B2 |. FEC0 inc al
0042F9B4 |. 8D4C24 30 lea ecx,dword ptr ss:[esp+0x30]
0042F9B8 |. 0FB6F0 movzx esi,al
0042F9BB |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F9C1 |. 8D4C24 6C lea ecx,dword ptr ss:[esp+0x6C]
0042F9C5 |. 889C24 B40000>mov byte ptr ss:[esp+0xB4],bl
0042F9CC |. E8 7FEC0100 call videoenc.0044E650
0042F9D1 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
0042F9D5 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F9DB |. 8D4C24 2C lea ecx,dword ptr ss:[esp+0x2C]
0042F9DF |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F9E5 |. 8D4C24 28 lea ecx,dword ptr ss:[esp+0x28]
0042F9E9 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F9EF |. 8D4C24 24 lea ecx,dword ptr ss:[esp+0x24]
0042F9F3 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042F9F9 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0042F9FD |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA03 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042FA07 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA0D |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042FA11 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA17 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042FA1B |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA21 |. 8BC6 mov eax,esi
0042FA23 |. EB 20 jmp short videoenc.0042FA45
0042FA25 |> 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0042FA29 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA2F |. 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0042FA33 |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA39 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0042FA3D |. FF15 E4894800 call dword ptr ds:[<&MFC71.#??1?$CString>; mfc71.#??1?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@QAE@XZ_578
0042FA43 |. 33C0 xor eax,eax
0042FA45 |> 8B8C24 AC0000>mov ecx,dword ptr ss:[esp+0xAC]
0042FA4C |. 5E pop esi ; 00180520
0042FA4D |. 64:890D 00000>mov dword ptr fs:[0],ecx
0042FA54 |. 8B8C24 A40000>mov ecx,dword ptr ss:[esp+0xA4]
0042FA5B |. 5B pop ebx ; 00180520
0042FA5C |. E8 69290300 call videoenc.004623CA
0042FA61 |. 81C4 B0000000 add esp,0xB0
0042FA67 \. C3 retn
md5的标志:
[Asm] 纯文本查看 复制代码 0044E750 /$ 8B4424 04 mov eax,dword ptr ss:[esp+0x4]
0044E754 |. 33C9 xor ecx,ecx
0044E756 |. 8948 14 mov dword ptr ds:[eax+0x14],ecx
0044E759 |. 8948 10 mov dword ptr ds:[eax+0x10],ecx
0044E75C |. C700 01234567 mov dword ptr ds:[eax],0x67452301
0044E762 |. C740 04 89ABC>mov dword ptr ds:[eax+0x4],0xEFCDAB89
0044E769 |. C740 08 FEDCB>mov dword ptr ds:[eax+0x8],0x98BADCFE
0044E770 |. C740 0C 76543>mov dword ptr ds:[eax+0xC],0x10325476
0044E777 \. C3 retn
3、注册机,依然用的吾爱的注册机生成器写的,就是http://www.52pojie.cn/thread-159470-1-1.html这个东西,提供代码,注册机自己去生成吧,那几天电脑中毒了,可能还没弄干净
源码:怎么设置回复可见??
[Visual Basic] 纯文本查看 复制代码 Function GetMC(X)
GetMC=x
MC=GetMC
'如机器码不参与运算,则直接MC=X即可
End Function
Function GetName(X)
GetName=x
Name=GetName
End Function
Function GetSN()
Dim softname
'这系列的软件就这个字符串不一样,找到这个字符串,换一下就成了系列注册机了
softname = "Jobosharevideoconverter2008.07.28"
'softname = "Joboshareaudiomaker2010.05.06" 'Audio Maker
'softname = "Jobosharedvdripperplatinum2008.07.28" 'DVD Ripper Platinum
'softname = "Jobosharedvdtomp4share2008.07.28" 'DVD to MP4 Converter
'softname = "Jobosharepdftotextconverter2011.09.15" 'PDF to Text Converter
'softname = "Jobosharevideoconverter2008.07.28" 'Video Converter
'太多了,我目前就只看了这几个,目测都差不多
Dim username, sncode, sn(39), midsn1, i, j, k
Dim midsn '这是要md5的字符串
Dim expasy '测试
username=Name
if len(username)=0 then
expasy = "请输入用户名!"
else
'前20位我随机产生的
For i = 1 To 20
Randomize
sn(i) = Asc(Hex(Int(Rnd() * 15)) & "")
'sn(i) = 56
If i Mod 5 = 0 Then
sn(i) = 45
End If
Next
'ok,前20位搞定
Dim soft() '这是用来存要md5的那个字符串的ascii的
n = Len(softname) * 3 + 24 '字符串总长度
ReDim soft(n) '在一般情况下,我数组下标喜欢从1开始,0不喜欢用
i = Int((Len(softname) + 2) \ 3) '
soft(1) = 49 '第一位是0x31(49)
For j = 1 To Len(softname) '因为第一位是0x31所以全部后移一位就都+1了
If j <= i Then '这是取出第(3*j+1) 位(j=0,1,2,3.....,字符串长度)位的过程
soft(2 * j + 1) = Int(3 * j - 2)
soft(2 * j) = Asc(Mid(softname, 3 * j - 2, 1))
Else '这是取出第(3*i+1) 位(i=0,1,2,3.....,字符串长度)位的过程
soft(2 * j + 1) = Int((3 * (j - i) + 1) \ 2)
soft(2 * j) = Asc(Mid(softname, Int((3 * (j - i) + 1) \ 2), 1))
End If '偶数搞定
Next
soft(2 * Len(softname) + 2) = 48 '这里连续2位0x30(48)
soft(2 * Len(softname) + 3) = 48
For j = (2 * Len(softname) + 4) To (2 * Len(softname) + 4 + 19) '这是sn前20位
soft(j) = sn(j - (2 * Len(softname) + 4) + 1)
Next
For j = 1 To n - (2 * Len(softname) + 23) - 1 '这是softname
soft(j + (2 * Len(softname) + 23)) = Asc(Mid(softname, j, 1))
Next
' soft(n) = 0
For i = 1 To n - 1
midsn = midsn & Chr(soft(i))
'soft(i) = Hex(soft(i)) '测试
Next
midsn1 = midsn '测试
midsn = UCase(md5(midsn1)) '转大写
Dim ss(16) '测试
For i = 1 To 16
ss(i) = Mid(midsn, 2 * i - 1, 1)
Next
For j = 1 To 19
If j Mod 5 = 0 Then
sn(j + 20) = 45 '- 这个符号
Else
sn(j + 20) = Asc(ss(j - (j - 1) \ 5))
End If
Next
For i = 1 To 39 '生成sn
sncode = sncode & Chr(sn(i))
Next
expasy = sncode '测试
end if
GetSN=expasy
End Function
4、注册机测试:
|
|