Windows System Optimizer V3.1算法分析
作者:wzh123
软件大小: 1196 KB软件语言: 英文软件类别: 国外软件 / 共享版 / 系统设置应用平台: Win9x/NT/2000/XP软件介绍: Windows System Optimizer是一个非常不错的系统优化软件,主要包含系统安全优化,文件系统优化,注册表优化,IE浏览器优化,网络优化,和一般优化六个部分,可以帮助你全面的为系统加速,程序界面简单清晰,分类明确,非常容易使用!
PJ工具:TRW20001.23注册版,W32Dasm8.93黄金版,FI2.5作者申明:只是学习,无其他目的。
1、软件没有加壳,用vc++编的;2、用TRW20001.23注册版,输入试验码:a12-b34567-c89(跟踪可知格式),下断点,确定,过程不多说了,大家跟一下就知道了,直接说核心吧。(其实这个软件是以前破的,现在手上只留下了关于算法的笔记,自己又不想再跟一次,所以只有算法分析这一块,请大家谅解。另一方面,我觉得光看教程是一方面,关键自己要亲自操练一下才能有更大的收获,本人也是刚刚学破解,第一次写这种东西,错误在所难免,写的也很乱,请各位包涵,也请各位高手指教)
:0040D7D0 52 push edx :0040D7D1 E8EAFEFFFF call 0040D6C0:0040D7D6 8B542443 mov edx, dword ptr [esp+43]:0040D7DA 88442418 mov byte ptr [esp+18], al:0040D7DE 52 push edx:0040D7DF E8DCFEFFFF call 0040D6C0:0040D7E4 8AD8 mov bl, al:0040D7E6 8B44244C mov eax, dword ptr [esp+4C]:0040D7EA 50 push eax:0040D7EB 885C245C mov byte ptr [esp+5C], bl:0040D7EF E8CCFEFFFF call 0040D6C0:0040D7F4 8A4C2420 mov cl, byte ptr [esp+20]:0040D7F8 83C40C add esp, 0000000C:0040D7FB 3ACB cmp cl, bl:0040D7FD 88442410 mov byte ptr [esp+10], al:0040D801 0F841AFFFFFF je 0040D721:0040D807 3AD8 cmp bl, al:0040D809 0F8412FFFFFF je 0040D721:0040D80F 3AC1 cmp al, cl:0040D811 0F840AFFFFFF je 0040D721 第5、8、13位不能相等:0040D817 8B742414 mov esi, dword ptr [esp+14] :0040D81B 8B6C2410 mov ebp, dword ptr [esp+10] :0040D81F 8B7C2450 mov edi, dword ptr [esp+50] :0040D823 81E6FF000000 and esi, 000000FF 第5位->esi:0040D829 8BC6 mov eax, esi:0040D82B 81E5FF000000 and ebp, 000000FF 第13位->ebp :0040D831 F7D0 not eax 第5位取反->eax:0040D833 81E7FF000000 and edi, 000000FF 第8位->edi:0040D839 23C5 and eax, ebp 第5位取反and ebp->eax:0040D83B 0BC7 or eax, edi :0040D83D B93E000000 mov ecx, 0000003E 0x3e->ecx:0040D842 0BC6 or eax, esi:0040D844 896C241C mov dword ptr [esp+1C], ebp ebp->ss:[12f2fc]:0040D848 33C6 xor eax, esi:0040D84A 99 cdq:0040D84B F7F9 idiv ecx:0040D84D 8BDA mov ebx, edx 余数->ebx:0040D84F 8B542438 mov edx, dword ptr [esp+38] a123"->edx:0040D853 52 push edx:0040D854 895C2428 mov dword ptr [esp+28], ebx (余数)->ss:[12f304]:0040D858 E863FEFFFF call 0040D6C0:0040D85D 83C404 add esp, 00000004:0040D860 3AD8 cmp bl, al 假码第1位与余数比较:0040D862 0F85B9FEFFFF jne 0040D721 不等就死:0040D868 8BDD mov ebx, ebp 第13位->ebx:0040D86A 8BEF mov ebp, edi 第8位->ebp:0040D86C F7D3 not ebx 第13位取反->ebx:0040D86E 23EE and ebp, esi 第8位 and 第5位->ebp:0040D870 23DF and ebx, edi ebx and 第8位->ebx:0040D872 8BC5 mov eax, ebp :0040D874 B93E000000 mov ecx, 0000003E:0040D879 0BC3 or eax, ebx :0040D87B 99 cdq:0040D87C F7F9 idiv ecx:0040D87E 89542418 mov dword ptr [esp+18], edx 余数->ss:[12f2f8]:0040D882 8B542439 mov edx, dword ptr [esp+39] 12-b"->edx:0040D886 52 push edx:0040D887 E834FEFFFF call 0040D6C0 转换:0040D88C 8A4C241C mov cl, byte ptr [esp+1C] ss:[12f2f8]余数->cl :0040D890 83C404 add esp, 00000004:0040D893 3AC8 cmp cl, al 假码第2位与余数比较:0040D895 0F8586FEFFFF jne 0040D721 不等就死:0040D89B 8A442410 mov al, byte ptr [esp+10] ss:[12f2f0]第13位->al:0040D89F 8A4C2450 mov cl, byte ptr [esp+50] ss:[12f330]第8位->cl:0040D8A3 32C1 xor al, cl 第13位 xor 第8位->al:0040D8A5 8A4C2414 mov cl, byte ptr [esp+14] ss:[12f2f4]第5位->cl:0040D8A9 32C1 xor al, cl:0040D8AB 0AC1 or al, cl:0040D8AD 88442450 mov byte ptr [esp+50], al al->ss:[12f330]:0040D8B1 8B44243A mov eax, dword ptr [esp+3A] "2-b3"->eax:0040D8B5 50 push eax:0040D8B6 E805FEFFFF call 0040D6C0:0040D8BB 8A4C2454 mov cl, byte ptr [esp+54] ss:[12f330]->cl:0040D8BF 83C404 add esp, 00000004:0040D8C2 3AC8 cmp cl, al 假码第3位与cl比较:0040D8C4 0F8557FEFFFF jne 0040D721 不等就死:0040D8CA 8A442410 mov al, byte ptr [esp+10] ss:[12f2f0]第13位->al:0040D8CE B93E000000 mov ecx, 0000003E 3e->ecx:0040D8D3 F6D0 not al al取反:0040D8D5 25FF000000 and eax, 000000FF eax and ff->eax:0040D8DA 0BC6 or eax, esi eax or 第5位->eax:0040D8DC 33C7 xor eax, edi eax or 第8位->eax:0040D8DE 99 cdq:0040D8DF F7F9 idiv ecx:0040D8E1 89542420 mov dword ptr [esp+20], edx 余数->ss:[12f300]:0040D8E5 8B54243D mov edx, dword ptr [esp+3D] "3456"->edx:0040D8E9 52 push edx:0040D8EA E8D1FDFFFF call 0040D6C0:0040D8EF 8A4C2424 mov cl, byte ptr [esp+24] ss:[12f300]余数->cl:0040D8F3 83C404 add esp, 00000004:0040D8F6 3AC8 cmp cl, al 假码第6位与余数比较:0040D8F8 0F8523FEFFFF jne 0040D721 不等就死:0040D8FE 8B44241C mov eax, dword ptr [esp+1C] ss:[12f2fc]->eax:0040D902 B93E000000 mov ecx, 0000003E 3e->ecx:0040D907 33E8 xor ebp, eax :0040D909 8D446D00 lea eax, dword ptr [ebp+2*ebp]:0040D90D 8D448500 lea eax, dword ptr [ebp+4*eax] ebp*D->eax:0040D911 99 cdq:0040D912 F7F9 idiv ecx:0040D914 8954241C mov dword ptr [esp+1C], edx 余数->ss:[12f2fc]:0040D918 8B54243E mov edx, dword ptr [esp+3E] "4567"->edx:0040D91C 52 push edx:0040D91D E89EFDFFFF call 0040D6C0:0040D922 8A4C2420 mov cl, byte ptr [esp+20] ss:[12f2fc]余数->cl:0040D926 83C404 add esp, 00000004:0040D929 3AC8 cmp cl, al 假码第7位与余数比较:0040D92B 0F85F0FDFFFF jne 0040D721 不等就死:0040D931 8A442424 mov al, byte ptr [esp+24] ss:[12f304]即余数->al(见上):0040D935 8B4C2440 mov ecx, dword ptr [esp+40] 67-c"->ecx:0040D939 88442424 mov byte ptr [esp+24], al al->ss:[12f304]:0040D93D 51 push ecx:0040D93E 8B6C2428 mov ebp, dword ptr [esp+28] ss:[12f304]即余数->ebp(见上):0040D942 81E5FF000000 and ebp, 000000FF ebp and ff->ebp:0040D948 E873FDFFFF call 0040D6C0:0040D94D 8AC8 mov cl, al 第9位->cl:0040D94F 8BC5 mov eax, ebp ebp->eax:0040D951 F7D0 not eax eax取反->eax:0040D953 23C7 and eax, edi eax and edi->eax:0040D955 83C404 add esp, 00000004:0040D958 0BC5 or eax, ebp eax or ebp->eax :0040D95A 0BC6 or eax, esi eax or esi->eax:0040D95C 33C5 xor eax, ebp eax xor ebp->eax:0040D95E BD3E000000 mov ebp, 0000003E 3e->ebp:0040D963 99 cdq:0040D964 F7FD idiv ebp:0040D966 3AD1 cmp dl, cl 余数与假码第9位比较:0040D968 0F85B3FDFFFF jne 0040D721 不等就死:0040D96E 8B542441 mov edx, dword ptr [esp+41] 7-c8"->edx:0040D972 52 push edx:0040D973 E848FDFFFF call 0040D6C0:0040D978 8AC8 mov cl, al 第10位->cl:0040D97A 8B44241C mov eax, dword ptr [esp+1C] ss:[12f2f8]余数(见上)->eax:0040D97E 25FF000000 and eax, 000000FF 第8位 and ff->eax:0040D983 83C404 add esp, 00000004:0040D986 23C7 and eax, edi eax and edi=第8位->eax:0040D988 8BFD mov edi, ebp 3e->edi:0040D98A 0BC3 or eax, ebx eax or ebx:0040D98C 99 cdq:0040D98D F7FF idiv edi:0040D98F 3AD1 cmp dl, cl 假码第10位与余数比较:0040D991 0F858AFDFFFF jne 0040D721 不等就死:0040D997 8B542443 mov edx, dword ptr [esp+43] c89E"->edx:0040D99B 52 push edx:0040D99C E81FFDFFFF call 0040D6C0:0040D9A1 8A4C2454 mov cl, byte ptr [esp+54] ss:[12f330]即第3位算码->cl(见上):0040D9A5 8A5C2414 mov bl, byte ptr [esp+14] ss:[12f2f0]"8"->bl:0040D9A9 8AD1 mov dl, cl cl->dl:0040D9AB 83C404 add esp, 00000004:0040D9AE 32D3 xor dl, bl dl xor bl->dl:0040D9B0 8A5C2414 mov bl, byte ptr [esp+14] ss:[12f2f4]"b"->bl:0040D9B4 32D3 xor dl, bl dl xor bl->dl:0040D9B6 0AD1 or dl, cl dl or cl->dl:0040D9B8 3AD0 cmp dl, al dl与假码第12位比较:0040D9BA 0F8561FDFFFF jne 0040D721 不等就死:0040D9C0 8B442445 mov eax, dword ptr [esp+45] "9E"->eax:0040D9C4 50 push eax:0040D9C5 E8F6FCFFFF call 0040D6C0:0040D9CA 8B4C2424 mov ecx, dword ptr [esp+24] ss:[12f300]即第6位算码(见上)->ecx:0040D9CE 8AD8 mov bl, al 第14位->bl:0040D9D0 8A442420 mov al, byte ptr [esp+20] ss:[12f2fc]余数即第7位算码->al:0040D9D4 81E1FF000000 and ecx, 000000FF ecx and ff->ecx:0040D9DA F6D0 not al al取反->al:0040D9DC 25FF000000 and eax, 000000FF 取al->eax:0040D9E1 83C404 add esp, 00000004:0040D9E4 0BC1 or eax, ecx eax or ecx->eax:0040D9E6 8BCD mov ecx, ebp 3e->ecx :0040D9E8 33C6 xor eax, esi eax xor 第4位->eax:0040D9EA 5F pop edi:0040D9EB 99 cdq:0040D9EC F7F9 idiv ecx:0040D9EE 33C0 xor eax, eax:0040D9F0 5E pop esi:0040D9F1 5D pop ebp:0040D9F2 3AD3 cmp dl, bl 余数与假码第14位比较:0040D9F4 5B pop ebx:0040D9F5 0F94C0 sete al 不等则条件为假去死:0040D9F8 83C43C add esp, 0000003C:0040D9FB C3 ret
所以注册码与姓名无关,算法如下:
注册码为14位,格式:s1s2s3-s4s5s6s7s8s9-s10s11s12 s取值范围为:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
s4、s7、s11位决定其他各位,且s4,s7,s11互不相等。1、s1=((((~s4)&s11)|s7)^s4)%0x3E;2、s2=(((~s11)&s7)|(s7&s4))%0x3E;3、s3=((s11^s7)^s4)|s4;4、s5=((((~s11)&0xFF)|s4)^s7)%0x3E;5、s6=(((s4&s7)^s11)*)0xD)%0x3E;6、s8=(((((~s1)&s7)|s1)|s4)^s1)%0x3E;7、s9=((s2&s7)|((~s11)&s7))%0x3E;8、s10=((s3|s11)^s4)|s3;9、s12=(((~s6)|s5)^s4)%0x3E.
XaP-qqBaXa-az6是2.6版的注册码
一个可用的注册码是xaX-qqBaqa-Xz6