好友
阅读权限25
听众
最后登录1970-1-1
|
樊盟
发表于 2010-6-10 16:07
Alldj Video Converter算法分析 By:yAtEs 2010.6.10
软件下载:http://www.alldj.com/
软件说明:
Alldj Video Converter is an all-in-one video converter software that convert video files from one format to another, and extract audio tracks from video. It allows you to convert all popular video formats including AVI, DivX, XviD, MPEG, WMV, MOV, ASF, QuickTime, MP4, 3GP, 3G2, VOB, MOD to iPod, PSP, Zune, mobile 3GP and 3G2.you can also convert the above video formats to AVI, DivX, XviD, DVD, SVCD, VCD, MPEG-1, MPEG-2, WMV, ASF, VOB, MOV formats.With the very easy to use interface you can alsoextract audio tracks from video files to MP3 music file. Runs on Microsoft Windows 98,NT,2000,XP,Vista.
* Convert popular video files between AVI, DIVX, VOB (DVD) , MPEG1/2, MOV(QuickTime), WMV/ASF, MP4, RM/RMVB (RealMedia), etc. * Convert Divx to MPEG1, Divx to MPEG2, Divx to VOB, Divx to SVCD, Divx to DVD, RM RMVB to MP4, AVI to WMV. * Convert all pupular video files to MP4 and other video formats. * Convert all pupular video files to WMV, ASF for PC and XBox or XBox360. * Convert RM/RMVB to DVD, RM/RMVB to AVI, RM/RMVB to MP4. * Support all popular media format. * Extract audiofrom video movies to MP3 format. * Fastest converting speed ,up to 300% real time. * High picturequality and high sound quality like original DVD. * Easy to add or remove DVD subtitle to output video file. * Full control audio and video parameter .
For more information please visit Mastersoft www.alldj.com/index.htm
//.查壳:Borland C++ for Win32 1999;
//.OllyDbg载入,查找字符串Register is successful!来到关键位置:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00402DD4 /. 55 push ebp
00402DD5 |. 8BEC mov ebp,esp
00402DD7 |. 83C4 B8 add esp,-0x48
00402DDA |. 53 push ebx
00402DDB |. 56 push esi
00402DDC |. 8BD8 mov ebx,eax
00402DDE |. 8D75 BC lea esi,[local.17]
00402DE1 |. B8 F07E5400 mov eax,Alldj_Vi.00547EF0
00402DE6 |. E8 4D4E1200 call Alldj_Vi.00527C38
00402DEB |. 66:C746 10 08>mov word ptr ds:[esi+0x10],0x8
00402DF1 |. 33D2 xor edx,edx
00402DF3 |. 8955 FC mov [local.1],edx
00402DF6 |. 8D55 FC lea edx,[local.1]
00402DF9 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402DFC |. 8B83 2C030000 mov eax,dword ptr ds:[ebx+0x32C]
00402E02 |. E8 6D371000 call Alldj_Vi.00506574 ; //取试炼码位数
00402E07 |. 8D4D FC lea ecx,[local.1]
00402E0A |. 33D2 xor edx,edx
00402E0C |. 8B01 mov eax,dword ptr ds:[ecx] ; //试炼码
00402E0E |. 50 push eax
00402E0F |. 8955 F8 mov [local.2],edx
00402E12 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402E15 |. 8D55 F8 lea edx,[local.2]
00402E18 |. 8B83 28030000 mov eax,dword ptr ds:[ebx+0x328]
00402E1E |. E8 51371000 call Alldj_Vi.00506574 ; //取用户名位数
00402E23 |. 8D4D F8 lea ecx,[local.2]
00402E26 |. 8B01 mov eax,dword ptr ds:[ecx] ; //用户名
00402E28 |. 50 push eax
00402E29 |. E8 AE010000 call Alldj_Vi.00402FDC ; //算法CALL,跟进去
00402E2E |. 83C4 08 add esp,0x8
00402E31 |. BA 02000000 mov edx,0x2
00402E36 |. 50 push eax
00402E37 |. 8D45 F8 lea eax,[local.2]
00402E3A |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402E3D |. E8 B61E1400 call Alldj_Vi.00544CF8
00402E42 |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402E45 |. 8D45 FC lea eax,[local.1]
00402E48 |. BA 02000000 mov edx,0x2
00402E4D |. E8 A61E1400 call Alldj_Vi.00544CF8
00402E52 |. 59 pop ecx
00402E53 |. 84C9 test cl,cl
00402E55 |. 0F84 22010000 je Alldj_Vi.00402F7D ; //关键跳转
00402E5B |. 66:C746 10 14>mov word ptr ds:[esi+0x10],0x14
00402E61 |. 33C0 xor eax,eax
00402E63 |. 8945 F4 mov [local.3],eax
00402E66 |. 8D55 F4 lea edx,[local.3]
00402E69 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402E6C |. 8B83 2C030000 mov eax,dword ptr ds:[ebx+0x32C]
00402E72 |. E8 FD361000 call Alldj_Vi.00506574
00402E77 |. 8D55 F4 lea edx,[local.3]
00402E7A |. 33C0 xor eax,eax
00402E7C |. 8B0A mov ecx,dword ptr ds:[edx]
00402E7E |. 8D55 F0 lea edx,[local.4]
00402E81 |. 51 push ecx
00402E82 |. 8945 F0 mov [local.4],eax
00402E85 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402E88 |. 8B83 28030000 mov eax,dword ptr ds:[ebx+0x328]
00402E8E |. E8 E1361000 call Alldj_Vi.00506574
00402E93 |. 8D55 F0 lea edx,[local.4]
00402E96 |. 8B0A mov ecx,dword ptr ds:[edx]
00402E98 |. 51 push ecx
00402E99 |. 53 push ebx
00402E9A |. E8 4D050000 call Alldj_Vi.004033EC
00402E9F |. 83C4 0C add esp,0xC
00402EA2 |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402EA5 |. 8D45 F0 lea eax,[local.4]
00402EA8 |. BA 02000000 mov edx,0x2
00402EAD |. E8 461E1400 call Alldj_Vi.00544CF8
00402EB2 |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402EB5 |. 8D45 F4 lea eax,[local.3]
00402EB8 |. BA 02000000 mov edx,0x2
00402EBD |. E8 361E1400 call Alldj_Vi.00544CF8
00402EC2 |. 6A 00 push 0x0
00402EC4 |. BA C27C5400 mov edx,Alldj_Vi.00547CC2 ; ASCII "Register is successful!"
00402EC9 |. 66:C746 10 20>mov word ptr ds:[esi+0x10],0x20
00402ECF |. 8D45 EC lea eax,[local.5]
00402ED2 |. E8 C11C1400 call Alldj_Vi.00544B98
00402ED7 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402EDA |. 8B08 mov ecx,dword ptr ds:[eax]
00402EDC |. 51 push ecx
00402EDD |. 6A 02 push 0x2
00402EDF |. 6A 00 push 0x0
00402EE1 |. 8D45 BA lea eax,dword ptr ss:[ebp-0x46]
00402EE4 |. 50 push eax
00402EE5 |. E8 324A1200 call Alldj_Vi.0052791C
00402EEA |. 83C4 0C add esp,0xC
00402EED |. 8D55 BA lea edx,dword ptr ss:[ebp-0x46]
00402EF0 |. 804D BA 04 or byte ptr ss:[ebp-0x46],0x4
00402EF4 |. 66:8B0A mov cx,word ptr ds:[edx]
00402EF7 |. B2 02 mov dl,0x2
00402EF9 |. 58 pop eax
00402EFA |. E8 21DB0F00 call Alldj_Vi.00500A20
00402EFF |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402F02 |. 8D45 EC lea eax,[local.5]
00402F05 |. BA 02000000 mov edx,0x2
00402F0A |. E8 E91D1400 call Alldj_Vi.00544CF8
00402F0F |. 66:C746 10 2C>mov word ptr ds:[esi+0x10],0x2C
00402F15 |. 33C9 xor ecx,ecx
00402F17 |. 894D E8 mov [local.6],ecx
00402F1A |. 8D55 E8 lea edx,[local.6]
00402F1D |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402F20 |. 8B83 28030000 mov eax,dword ptr ds:[ebx+0x328]
00402F26 |. E8 49361000 call Alldj_Vi.00506574
00402F2B |. 8D45 E8 lea eax,[local.6]
00402F2E |. 33D2 xor edx,edx
00402F30 |. 8955 E4 mov [local.7],edx
00402F33 |. 8D55 E4 lea edx,[local.7]
00402F36 |. FF46 1C inc dword ptr ds:[esi+0x1C]
00402F39 |. E8 0A201400 call Alldj_Vi.00544F48
00402F3E |. 8D55 E4 lea edx,[local.7]
00402F41 |. A1 94BA5500 mov eax,dword ptr ds:[0x55BA94]
00402F46 |. E8 DD1D1400 call Alldj_Vi.00544D28
00402F4B |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402F4E |. 8D45 E4 lea eax,[local.7]
00402F51 |. BA 02000000 mov edx,0x2
00402F56 |. E8 9D1D1400 call Alldj_Vi.00544CF8
00402F5B |. FF4E 1C dec dword ptr ds:[esi+0x1C]
00402F5E |. 8D45 E8 lea eax,[local.6]
00402F61 |. BA 02000000 mov edx,0x2
00402F66 |. E8 8D1D1400 call Alldj_Vi.00544CF8
00402F6B |. 8B0D ACBA5500 mov ecx,dword ptr ds:[0x55BAAC] ; Alldj_Vi._g_b_Reged
00402F71 |. 8BC3 mov eax,ebx
00402F73 |. C601 01 mov byte ptr ds:[ecx],0x1
00402F76 |. E8 C1450F00 call Alldj_Vi.004F753C
00402F7B |. EB 4D jmp short Alldj_Vi.00402FCA
00402F7D |> 6A 00 push 0x0
00402F7F |. BA DA7C5400 mov edx,Alldj_Vi.00547CDA ; ASCII "Incorrect Reg Name or Reg Code!
Please Input VALIDATE Reg Name and Reg Code!"
00402F84 |. 66:C746 10 38>mov word ptr ds:[esi+0x10],0x38
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0040327D |. E8 5A0A0000 call Alldj_Vi.00403CDC ; //比较CALL,跟进去
00403282 |. 83C4 08 add esp,0x8
00403285 |. 84C0 test al,al
00403287 |. 0F84 06010000 je Alldj_Vi.00403393
0040328D |. A1 78BA5500 mov eax,dword ptr ds:[0x55BA78]
00403292 |. 8338 00 cmp dword ptr ds:[eax],0x0
00403295 |. 74 0A je short Alldj_Vi.004032A1
00403297 |. 8B15 78BA5500 mov edx,dword ptr ds:[0x55BA78] ; Alldj_Vi._ProductName
0040329D |. 8B3A mov edi,dword ptr ds:[edx]
0040329F |. EB 06 jmp short Alldj_Vi.004032A7
004032A1 |> 8DBE 98010000 lea edi,dword ptr ds:[esi+0x198]
004032A7 |> 0FBE47 05 movsx eax,byte ptr ds:[edi+0x5] ; //V的十六进制56
004032AB |. 8945 A4 mov [local.23],eax
004032AE |. 8B15 7CBA5500 mov edx,dword ptr ds:[0x55BA7C] ; Alldj_Vi._i_Key
004032B4 |. 8B0A mov ecx,dword ptr ds:[edx] ; //ECX=13
004032B6 |. 83C1 FB add ecx,-0x5 ; //13-5=E
004032B9 |. 8B45 A4 mov eax,[local.23]
004032BC |. 99 cdq
004032BD |. F7F9 idiv ecx ; //商送EAX,余数送EDX,设余数为S1!
004032BF |. 52 push edx
004032C0 |. 837D F4 00 cmp [local.3],0x0
004032C4 |. 74 05 je short Alldj_Vi.004032CB
004032C6 |. 8B4D F4 mov ecx,[local.3]
004032C9 |. EB 06 jmp short Alldj_Vi.004032D1
004032CB |> 8D8E 96010000 lea ecx,dword ptr ds:[esi+0x196]
004032D1 |> 51 push ecx
004032D2 |. E8 050A0000 call Alldj_Vi.00403CDC
004032D7 |. 83C4 08 add esp,0x8
004032DA |. 84C0 test al,al
004032DC |. 0F84 B1000000 je Alldj_Vi.00403393
004032E2 |. A1 78BA5500 mov eax,dword ptr ds:[0x55BA78]
004032E7 |. 8338 00 cmp dword ptr ds:[eax],0x0
004032EA |. 74 0A je short Alldj_Vi.004032F6
004032EC |. 8B15 78BA5500 mov edx,dword ptr ds:[0x55BA78] ; Alldj_Vi._ProductName
004032F2 |. 8B02 mov eax,dword ptr ds:[edx]
004032F4 |. EB 06 jmp short Alldj_Vi.004032FC
004032F6 |> 8D86 9B010000 lea eax,dword ptr ds:[esi+0x19B]
004032FC |> 8945 A0 mov [local.24],eax
004032FF |. A1 7CBA5500 mov eax,dword ptr ds:[0x55BA7C]
00403304 |. 8B55 A0 mov edx,[local.24]
00403307 |. 0FBE4A 07 movsx ecx,byte ptr ds:[edx+0x7] ; //d的十六进制64
0040330B |. 894D 9C mov [local.25],ecx
0040330E |. 8B10 mov edx,dword ptr ds:[eax] ; //EDX=13
00403310 |. 8B45 9C mov eax,[local.25]
00403313 |. 83C2 F9 add edx,-0x7 ; //13-7=C
00403316 |. 8BCA mov ecx,edx
00403318 |. 99 cdq
00403319 |. F7F9 idiv ecx ; //商送EAX,余数送EDX,设余数为S2!
0040331B |. 52 push edx
0040331C |. 837D F8 00 cmp [local.2],0x0
00403320 |. 74 05 je short Alldj_Vi.00403327
00403322 |. 8B45 F8 mov eax,[local.2]
00403325 |. EB 06 jmp short Alldj_Vi.0040332D
00403327 |> 8D86 99010000 lea eax,dword ptr ds:[esi+0x199]
0040332D |> 50 push eax
0040332E |. E8 A9090000 call Alldj_Vi.00403CDC
00403333 |. 83C4 08 add esp,0x8
00403336 |. 84C0 test al,al
00403338 |. 74 59 je short Alldj_Vi.00403393
0040333A |. 8B15 78BA5500 mov edx,dword ptr ds:[0x55BA78] ; Alldj_Vi._ProductName
00403340 |. 833A 00 cmp dword ptr ds:[edx],0x0
00403343 |. 74 0A je short Alldj_Vi.0040334F
00403345 |. 8B0D 78BA5500 mov ecx,dword ptr ds:[0x55BA78] ; Alldj_Vi._ProductName
0040334B |. 8B01 mov eax,dword ptr ds:[ecx]
0040334D |. EB 06 jmp short Alldj_Vi.00403355
0040334F |> 8D86 9E010000 lea eax,dword ptr ds:[esi+0x19E]
00403355 |> 8945 98 mov [local.26],eax
00403358 |. A1 7CBA5500 mov eax,dword ptr ds:[0x55BA7C]
0040335D |. 8B55 98 mov edx,[local.26]
00403360 |. 0FBE4A 09 movsx ecx,byte ptr ds:[edx+0x9] ; //o的十六进制6F
00403364 |. 894D 94 mov [local.27],ecx
00403367 |. 8B10 mov edx,dword ptr ds:[eax] ; //EDX=13
00403369 |. 8B45 94 mov eax,[local.27]
0040336C |. 83C2 F7 add edx,-0x9 ; //13-9=A
0040336F |. 8BCA mov ecx,edx
00403371 |. 99 cdq
00403372 |. F7F9 idiv ecx ; //商送EAX,余数送EDX,设余数为S3!
00403374 |. 52 push edx
00403375 |. 837D FC 00 cmp [local.1],0x0
00403379 |. 74 05 je short Alldj_Vi.00403380
0040337B |. 8B45 FC mov eax,[local.1]
0040337E |. EB 06 jmp short Alldj_Vi.00403386
00403380 |> 8D86 9C010000 lea eax,dword ptr ds:[esi+0x19C]
00403386 |> 50 push eax
00403387 |. E8 50090000 call Alldj_Vi.00403CDC
0040338C |. 83C4 08 add esp,0x8
0040338F |. 84C0 test al,al
00403391 |. 75 04 jnz short Alldj_Vi.00403397
00403393 |> 33C0 xor eax,eax
00403395 |. EB 05 jmp short Alldj_Vi.0040339C
00403397 |> B8 01000000 mov eax,0x1
0040339C |> 50 push eax
0040339D |. 8D55 F0 lea edx,[local.4]
004033A0 |. 8343 1C FC add dword ptr ds:[ebx+0x1C],-0x4
004033A4 |. 68 F84C5400 push Alldj_Vi.00544CF8 ; 入口地址
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00403CDC /$ 55 push ebp
00403CDD |. 8BEC mov ebp,esp
00403CDF |. 53 push ebx
00403CE0 |. 56 push esi
00403CE1 |. 8B5D 0C mov ebx,[arg.2]
00403CE4 |. 8B75 08 mov esi,[arg.1]
00403CE7 |. 33C9 xor ecx,ecx
00403CE9 |. 85DB test ebx,ebx
00403CEB |. 75 42 jnz short Alldj_Vi.00403D2F
00403CED |. 8BC6 mov eax,esi
00403CEF |. 8B15 80BA5500 mov edx,dword ptr ds:[0x55BA80] ; Alldj_Vi._FirstString
00403CF5 |. 833A 00 cmp dword ptr ds:[edx],0x0
00403CF8 |. 74 0A je short Alldj_Vi.00403D04
00403CFA |. 8B15 80BA5500 mov edx,dword ptr ds:[0x55BA80] ; Alldj_Vi._FirstString
00403D00 |. 8B12 mov edx,dword ptr ds:[edx]
00403D02 |. EB 05 jmp short Alldj_Vi.00403D09
00403D04 |> BA C57D5400 mov edx,Alldj_Vi.00547DC5
00403D09 |> 8A08 /mov cl,byte ptr ds:[eax]
00403D0B |. 3A0A |cmp cl,byte ptr ds:[edx] ; //比较1
00403D0D |. 75 1C |jnz short Alldj_Vi.00403D2B
00403D0F |. 84C9 |test cl,cl
00403D11 |. 74 12 |je short Alldj_Vi.00403D25
00403D13 |. 8A48 01 |mov cl,byte ptr ds:[eax+0x1]
00403D16 |. 3A4A 01 |cmp cl,byte ptr ds:[edx+0x1] ; //比较2
00403D19 |. 75 10 |jnz short Alldj_Vi.00403D2B
00403D1B |. 83C0 02 |add eax,0x2
00403D1E |. 83C2 02 |add edx,0x2
00403D21 |. 84C9 |test cl,cl
00403D23 |.^ 75 E4 \jnz short Alldj_Vi.00403D09 ; //循环
00403D25 |> 75 04 jnz short Alldj_Vi.00403D2B
00403D27 |. B0 01 mov al,0x1
00403D29 |. EB 2D jmp short Alldj_Vi.00403D58
00403D2B |> 33C0 xor eax,eax
00403D2D |. EB 29 jmp short Alldj_Vi.00403D58
00403D2F |> 33D2 xor edx,edx
00403D31 |. 8BC6 mov eax,esi ; //注册单元后面有短横线则开始计算
00403D33 |> 0FBE30 /movsx esi,byte ptr ds:[eax]
00403D36 |. 03CE |add ecx,esi
00403D38 |. 42 |inc edx
00403D39 |. 40 |inc eax
00403D3A |. 83FA 04 |cmp edx,0x4
00403D3D |.^ 7C F4 \jl short Alldj_Vi.00403D33 ; //每个注册码单元前四位ASCII码十六进制之和
00403D3F |. A1 7CBA5500 mov eax,dword ptr ds:[0x55BA7C]
00403D44 |. FF30 push dword ptr ds:[eax]
00403D46 |. 8BC1 mov eax,ecx ; //ASCII码之和存入EAX
00403D48 |. 5A pop edx
00403D49 |. 8BCA mov ecx,edx ; //13存入ECX
00403D4B |. 99 cdq
00403D4C |. F7F9 idiv ecx ; //商送EAX,余数送EDX
00403D4E |. 3BDA cmp ebx,edx ; //与前面计算的余数比较
00403D50 |. 75 04 jnz short Alldj_Vi.00403D56
00403D52 |. B0 01 mov al,0x1
00403D54 |. EB 02 jmp short Alldj_Vi.00403D58
00403D56 |> 33C0 xor eax,eax
00403D58 |> 5E pop esi
00403D59 |. 5B pop ebx
00403D5A |. 5D pop ebp
00403D5B \. C3 retn
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
穷举注册码:
XXXX÷13=Y……2
XXXX=A1+B1+C1+D1
XXXX=D3
101A
YYYY÷13=Y……4
YYYY=A2+B2+C2+D2
YYYY=D5
101C
ZZZZ÷13=Y……1
ZZZZ=A3+B3+C3+D3
ZZZZ=D2
1098
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
算法总结:
//.用户名不参与计算;
//.注册码必须用“-”连接,长度不限;
//.注册码前六位必须是ALLDJVC;
//.注册码形式:ALLDJVC-XXXX-YYYY-ZZZZ;
//.注册码分四个单元,第一个单元固定,每个单元之间用短横线“-”分开,计算时只取每个注册码单元的前四位;
//.软件名称:AllDJVideoConverter;
V的十六进制数=56;
56÷(13-5)=L……Sn1;
d的十六进制数=64;
64÷(13-7)=M……Sn2;
o的十六进制数=6F;
6F÷(13-9)=N……Sn3;
//.XXXX÷13=A……Sn1,(XXXX指第二单元注册码前四位ASCII码十六进制之和,A随意);
//.YYYY÷13=B……Sn2,(YYYY指第三单元注册码前四位ASCII码十六进制之和,B随意);
//.ZZZZ÷13=C……Sn3,(ZZZZ指第四单元注册码前四位ASCII码十六进制之和,C随意)。
//.Serial Number:
Name:yAtEs
Code:ALLDJVC-101A-101C-1098
//.注册表信息:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\AllDJVideoConverter]
"DiscountDate"=hex:00,00,00,00,60,b2,e3,40
"RegName"="yAtEs"
"SN"="ALLDJVC-101A-101C-1098"
|
|