Windows System Optimizer V3.1演算法分析

看雪資料發表於2015-11-15

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

相關文章