很久没在这发文了,年终将近,纪念下郁闷的生活.
Apex MPEG VCD DVD Converter 4.94
软件大小:7870KB
软件语言:英文
软件类别:国外软件/共享版/视频工具
运行环境:Win9x/Me/NT/2000/XP/2003
加入时间:2006-12-11 11:20:38
软件详细信息
一款视频转换工具,支持一种格式转换成多种格式的功能。能转换VI, DivX,XviD, MPEG, WMV, MOV, ASF, QuickTime ,RM,RMVB为MPG,VCD,SVCD,DVD MPEG格式,能选择制作人和指定视频格式大小等,能进行视频片段的剪截并进行编码,支持批处理。
比较简单的RSA,供练习.
加载过程中n多dll加了ASprotect壳,脚本顺便脱之.
出错提示:
0040A8D6 68 0C664300 push ApexMPEG.0043660C ; ASCII "Register Code or Name can be null !"
关键地方:
0040A833 50 push eax
0040A834 E8 2796FFFF call ApexMPEG.00403E60
0040A839 83C4 04 add esp,4
0040A83C 83F8 01 cmp eax,1
0040A83F 0F85 A7000000 jnz ApexMPEG.0040A8EC
注册码长度:
00403E7C 83F9 30 cmp ecx,30
00403E7F 0F85 E5000000 jnz ApexMPEG.00403F6A
共3关,3个RSA加密:
00403EFD 8D8C24 30010000 lea ecx,dword ptr ss:[esp+130] ; M1
00403F04 68 AC614300 push ApexMPEG.004361AC ; ASCII "8B5F314DC132D0E1"
00403F09 51 push ecx
00403F0A 889C24 48010000 mov byte ptr ss:[esp+148],bl
00403F11 885C24 48 mov byte ptr ss:[esp+48],bl
00403F15 889C24 48020000 mov byte ptr ss:[esp+248],bl
00403F1C E8 0FFEFFFF call ApexMPEG.00403D30 ; RSA加密
00403F21 8D5424 38 lea edx,dword ptr ss:[esp+38] ; M2
00403F25 68 98614300 push ApexMPEG.00436198 ; ASCII "702E902F7C6D8689"
00403F2A 52 push edx
00403F2B 8BF0 mov esi,eax ; 得到的加密值C1赋值给esi
00403F2D E8 FEFDFFFF call ApexMPEG.00403D30 ; RSA加密
00403F32 8BF8 mov edi,eax ; 得到的加密值C2赋值给edi
00403F34 8D8424 40020000 lea eax,dword ptr ss:[esp+240] ; M3
00403F3B 68 98614300 push ApexMPEG.00436198 ; ASCII "702E902F7C6D8689"
00403F40 50 push eax
00403F41 E8 EAFDFFFF call ApexMPEG.00403D30 ; RSA加密
00403F46 83C4 3C add esp,3C ; 得到加密值C3=eax
00403F49 3BF3 cmp esi,ebx
00403F4B 7E 1D jle short ApexMPEG.00403F6A
00403F4D 3BFB cmp edi,ebx
00403F4F 7E 19 jle short ApexMPEG.00403F6A
00403F51 3BC3 cmp eax,ebx
00403F53 7E 15 jle short ApexMPEG.00403F6A
00403F55 03C6 add eax,esi ; C3+C1
00403F57 33C9 xor ecx,ecx
00403F59 3BC7 cmp eax,edi ; 和与C2比较
00403F5B 5F pop edi
00403F5C 0F94C1 sete cl
00403F5F 5E pop esi
00403F60 8BC1 mov eax,ecx
00403F62 5B pop ebx
00403F63 81C4 00030000 add esp,300
00403F69 C3 retn
分3组RSA加密,第一组与第三组的加密值的和=第二组的加密值.
RSA加密过程: call ApexMPEG.00403D30
先判断是不是数字:
00403DA6 8B8424 1C010000 mov eax,dword ptr ss:[esp+11C]
00403DAD 0FBE0C06 movsx ecx,byte ptr ds:[esi+eax]
00403DB1 51 push ecx
00403DB2 FF15 C4E54200 call dword ptr ds:[<&MSVCRT.isxdigit>] ; MSVCRT.isxdigit
00403DB8 83C4 04 add esp,4
00403DBB 85C0 test eax,eax
00403DBD 0F84 82000000 je ApexMPEG.00403E45
00403DC3 46 inc esi
00403DC4 3BF7 cmp esi,edi
00403DC6 ^ 7C DE jl short ApexMPEG.00403DA6
再判断M是否大于N:
00403DF7 55 push ebp ; N
00403DF8 53 push ebx ; M
00403DF9 E8 421E0200 call ApexMPEG.00425C40 ; M是否大于N?
00403DFE 83C4 20 add esp,20
00403E01 83F8 FF cmp eax,-1
00403E04 75 3F jnz short ApexMPEG.00403E45 ; 大于就over?
加密:
00403E0A 56 push esi ; 存放加密值
00403E0B 55 push ebp ; N
00403E0C 57 push edi
00403E0D 53 push ebx ; M
00403E0E E8 1D2E0200 call ApexMPEG.00426C30
转换为十六进制:
00403E4A FF15 C0E54200 call dword ptr ds:[<&MSVCRT.atoi>] ; MSVCRT.atol
eax的值就是转换后的值.
这里注意,如果M太大,不加密直接退出.
另外如果加密值不能转换为字符的话,eax值也为0.
反推注册码:
E=10001
N1=8B5F314DC132D0E1
D1=137F2D964D3F145
N2=702E902F7C6D8689
D2=E36D82E01011DD
N3=702E902F7C6D8689
D3=E36D82E01011DD
假设加密值分别为:32323232,38383838,,36363636
那么M1=01090CC1B0B76B8A,M2=4856DEF4EC488E63,M3=5B5E714BDE87AB7E
注册码:
01090CC1B0B76B8A4856DEF4EC488E635B5E714BDE87AB7E
注册码与用户名无关.
写入注册表:
HKCU\SOFTWARE\Apex\Apex MPEG Converter\user\(Default)
HKCU\SOFTWARE\Apex\Apex MPEG Converter\code\(Default)