【原創】Audio To Video Mixer 3.0簡單演算法分析 發帖人:zmw1224

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

【破解作者】 zmw1224[CZG][DFCG]
【作者郵箱】 zmw1224@yahoo.com.cn
【使用工具】 OD
【破解平臺】 win2003
【軟體名稱】 Audio To Video Mixer 3.0
【下載地址】 http://www.onlinedown.net/soft/39614.htm
【軟體簡介】 Audio to Video Mixer是一款影片編輯工具,用於將音訊檔案混合入影片中。它能夠將你的家庭影片的原音消除,加入背景音樂,解說或更多的音軌。

【軟體大小】 697KB
【加殼方式】 無
【破解宣告】 本筆記只用於學習交流, 初學Crack,只是感興趣技術,沒有其他目的, 如有不妥之處, 希望作者諒解.
--------------------------------------------------------------------------------
【破解內容】


查殼無,OD載入,查詢字串,快速的上下翻了下,看見了重要資訊--------> "Please input correct User Name!"
雙擊來到下面:
輸入相關資訊:
使用者名稱:zmw1224
註冊碼:123567890

確定後馬上被斷:
004169F3    .  55               push ebp                       ;在這下斷
004169F4    .  56               push esi
004169F5    .  57               push edi
004169F6    .  BF 01000000      mov edi,1
004169FB    .  57               push edi
004169FC    .  8BF1             mov esi,ecx
004169FE    .  E8 BDB40100      call a2vmixer.00431EC0
00416A03    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A06    .  8B68 F4          mov ebp,dword ptr ds:[eax-C]
00416A09    .  83FD 02          cmp ebp,2                       ;  使用者名稱必須大於2位
00416A0C    .  7D 15            jge short a2vmixer.00416A23
00416A0E    .  6A 00            push 0
00416A10    .  6A 00            push 0
00416A12    .  68 DC874400      push a2vmixer.004487DC          ;  ASCII "Please input correct User Name!"
00416A17    .  E8 A4510200      call a2vmixer.0043BBC0
00416A1C    .  5F               pop edi
00416A1D    .  5E               pop esi
00416A1E    .  5D               pop ebp
00416A1F    .  83C4 0C          add esp,0C
00416A22    .  C3               retn
00416A23    >  8B4E 74          mov ecx,dword ptr ds:[esi+74]
00416A26    .  8379 F4 08       cmp dword ptr ds:[ecx-C],8      ;  註冊碼必須大於8位(其實註冊判斷只是前5位起做用,後面的N位無關緊要隨意輸,這是分析完註冊演算法後得出的結果。)
00416A2A    .  7D 15            jge short a2vmixer.00416A41
00416A2C    .  6A 00            push 0
00416A2E    .  6A 00            push 0
00416A30    .  68 B4874400      push a2vmixer.004487B4          ;  ASCII "Please input correct Registration Code!"
00416A35    .  E8 86510200      call a2vmixer.0043BBC0
00416A3A    .  5F               pop edi
00416A3B    .  5E               pop esi
00416A3C    .  5D               pop ebp
00416A3D    .  83C4 0C          add esp,0C
00416A40    .  C3               retn
00416A41    >  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A44    .  8B48 F4          mov ecx,dword ptr ds:[eax-C]
00416A47    .  85C9             test ecx,ecx
00416A49    .  7D 0A            jge short a2vmixer.00416A55
00416A4B    .  68 57000780      push 80070057
00416A50    .  E8 ABA8FEFF      call a2vmixer.00401300
00416A55    >  8A10             mov dl,byte ptr ds:[eax]
00416A57    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A5A    .  3978 F4          cmp dword ptr ds:[eax-C],edi
00416A5D    .  7D 0A            jge short a2vmixer.00416A69
00416A5F    .  68 57000780      push 80070057
00416A64    .  E8 97A8FEFF      call a2vmixer.00401300
00416A69    >  8A40 01          mov al,byte ptr ds:[eax+1]
00416A6C    .  884424 0E        mov byte ptr ss:[esp+E],al
00416A70    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A73    .  8B48 F4          mov ecx,dword ptr ds:[eax-C]
00416A76    .  85C9             test ecx,ecx
00416A78    .  7D 0A            jge short a2vmixer.00416A84
00416A7A    .  68 57000780      push 80070057
00416A7F    .  E8 7CA8FEFF      call a2vmixer.00401300
00416A84    >  8B4E 70          mov ecx,dword ptr ds:[esi+70]
00416A87    .  53               push ebx
00416A88    .  8A18             mov bl,byte ptr ds:[eax]
00416A8A    .  3979 F4          cmp dword ptr ds:[ecx-C],edi
00416A8D    .  7D 0A            jge short a2vmixer.00416A99
00416A8F    .  68 57000780      push 80070057
00416A94    .  E8 67A8FEFF      call a2vmixer.00401300
00416A99    >  0FB6C2           movzx eax,dl                    ;  第一個字元(z)送到EAX裡。
00416A9C    .  83C8 41          or eax,41                       ;  EAX=EAX or 0x41
00416A9F    .  99               cdq
00416AA0    .  BF 0A000000      mov edi,0A
00416AA5    .  F7FF             idiv edi                        ;  EAX=EAX/EDI(0A),餘數在EDX裡,EDX=3
00416AA7    .  0FB64424 12      movzx eax,byte ptr ss:[esp+12]  ;  第二個字元(m)送到EAX裡
00416AAC    .  83C8 32          or eax,32                       ;  EAX=EAX or 0x32
00416AAF    .  885424 16        mov byte ptr ss:[esp+16],dl     ;  把第一次算的餘數先儲存起來。
00416AB3    .  99               cdq
00416AB4    .  F7FF             idiv edi                        ;  (EDI裡的值一直沒變,一直都是除以A)EAX=EAX/EDI(0A),餘數在EDX裡,EDX=7
00416AB6    .  0FB6C3           movzx eax,bl                    ;  再次把第一個字元(z)送到EAX裡,EAX=7A
00416AB9    .  83C8 56          or eax,56                       ;  EAX=EAX or 0x56
00416ABC    .  885424 12        mov byte ptr ss:[esp+12],dl     ;  把第二次算的餘數先儲存起來。
00416AC0    .  99               cdq
00416AC1    .  F7FF             idiv edi                        ;  EAX=EAX/EDI(0A),餘數在EDX裡,EDX=6
00416AC3    .  0FB641 01        movzx eax,byte ptr ds:[ecx+1]   ;  再次把第二個字元(m)送到EAX裡,EAX=6D
00416AC7    .  83C8 4D          or eax,4D                       ;  EAX=EAX or 0x4D
00416ACA    .  8BCF             mov ecx,edi
00416ACC    .  885424 17        mov byte ptr ss:[esp+17],dl     ;  把第三次算的餘數先儲存起來。
00416AD0    .  99               cdq
00416AD1    .  F7F9             idiv ecx                        ;  EAX=EAX/ECX(0A),餘數在EDX裡,EDX=9
00416AD3    .  33C0             xor eax,eax                     ;  EAX清0
00416AD5    .  33C9             xor ecx,ecx                     ;  ECX清0
00416AD7    .  85ED             test ebp,ebp
00416AD9    .  885424 18        mov byte ptr ss:[esp+18],dl     ;  把第四次算的餘數先儲存起來。(四次的餘數,分別為3、7、6、9)
00416ADD    .  7E 20            jle short a2vmixer.00416AFF
00416ADF    .  90               nop
00416AE0    >  85C9             test ecx,ecx
00416AE2    .  0F8C D2000000    jl a2vmixer.00416BBA
00416AE8    .  8B7E 70          mov edi,dword ptr ds:[esi+70]
00416AEB    .  3B4F F4          cmp ecx,dword ptr ds:[edi-C]
00416AEE    .  0F8F C6000000    jg a2vmixer.00416BBA
00416AF4    .  0FB6140F         movzx edx,byte ptr ds:[edi+ecx] ;  這部分是累加用名用的ASCii值
00416AF8    .  03C2             add eax,edx
00416AFA    .  41               inc ecx                         ;  即zmw1224---->EAX=0x227
00416AFB    .  3BCD             cmp ecx,ebp
00416AFD    .^ 7C E1            jl short a2vmixer.00416AE0
00416AFF    >  8B4E 74          mov ecx,dword ptr ds:[esi+74]   ;  假註冊碼送到ECX裡,ECX=123456789
00416B02    .  8B51 F4          mov edx,dword ptr ds:[ecx-C]
00416B05    .  85D2             test edx,edx
00416B07    .  7D 0A            jge short a2vmixer.00416B13
00416B09    .  68 57000780      push 80070057
00416B0E    .  E8 EDA7FEFF      call a2vmixer.00401300
00416B13    >  8A11             mov dl,byte ptr ds:[ecx]
00416B15    .  8B4E 74          mov ecx,dword ptr ds:[esi+74]
00416B18    .  8379 F4 01       cmp dword ptr ds:[ecx-C],1
00416B1C    .  885424 19        mov byte ptr ss:[esp+19],dl
00416B20    .  7D 0A            jge short a2vmixer.00416B2C
00416B22    .  68 57000780      push 80070057
00416B27    .  E8 D4A7FEFF      call a2vmixer.00401300
00416B2C    >  8A49 01          mov cl,byte ptr ds:[ecx+1]
00416B2F    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B32    .  884C24 13        mov byte ptr ss:[esp+13],cl
00416B36    .  837F F4 02       cmp dword ptr ds:[edi-C],2
00416B3A    .  7D 0A            jge short a2vmixer.00416B46
00416B3C    .  68 57000780      push 80070057
00416B41    .  E8 BAA7FEFF      call a2vmixer.00401300
00416B46    >  8A4F 02          mov cl,byte ptr ds:[edi+2]
00416B49    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B4C    .  884C24 14        mov byte ptr ss:[esp+14],cl
00416B50    .  837F F4 03       cmp dword ptr ds:[edi-C],3
00416B54    .  7D 0A            jge short a2vmixer.00416B60
00416B56    .  68 57000780      push 80070057
00416B5B    .  E8 A0A7FEFF      call a2vmixer.00401300
00416B60    >  8A4F 03          mov cl,byte ptr ds:[edi+3]
00416B63    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B66    .  884C24 15        mov byte ptr ss:[esp+15],cl
00416B6A    .  837F F4 04       cmp dword ptr ds:[edi-C],4
00416B6E    .  7D 0A            jge short a2vmixer.00416B7A
00416B70    .  68 57000780      push 80070057
00416B75    .  E8 86A7FEFF      call a2vmixer.00401300
00416B7A    >  8A4F 04          mov cl,byte ptr ds:[edi+4]
00416B7D    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B80    .  837F F4 05       cmp dword ptr ds:[edi-C],5
00416B84    .  7D 0A            jge short a2vmixer.00416B90
00416B86    .  68 57000780      push 80070057
00416B8B    .  E8 70A7FEFF      call a2vmixer.00401300
00416B90    >  8A5F 05          mov bl,byte ptr ds:[edi+5]
00416B93    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B96    .  885C24 1A        mov byte ptr ss:[esp+1A],bl
00416B9A    .  837F F4 06       cmp dword ptr ds:[edi-C],6
00416B9E    .  7D 0A            jge short a2vmixer.00416BAA
00416BA0    .  68 57000780      push 80070057
00416BA5    .  E8 56A7FEFF      call a2vmixer.00401300
00416BAA    >  8A5F 06          mov bl,byte ptr ds:[edi+6]
00416BAD    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416BB0    .  885C24 1B        mov byte ptr ss:[esp+1B],bl
00416BB4    .  837F F4 07       cmp dword ptr ds:[edi-C],7
00416BB8    .  7D 0A            jge short a2vmixer.00416BC4
00416BBA    >  68 57000780      push 80070057
00416BBF    .  E8 3CA7FEFF      call a2vmixer.00401300
00416BC4    >  8A5F 07          mov bl,byte ptr ds:[edi+7]
00416BC7    .  0FB67C24 16      movzx edi,byte ptr ss:[esp+16]
00416BCC    .  0FB6D2           movzx edx,dl
00416BCF    .  83EA 30          sub edx,30
00416BD2    .  3BFA             cmp edi,edx
00416BD4    .  75 48            jnz short a2vmixer.00416C1E
00416BD6    .  0FB65424 13      movzx edx,byte ptr ss:[esp+13]
00416BDB    .  0FB67C24 12      movzx edi,byte ptr ss:[esp+12]
00416BE0    .  83EA 30          sub edx,30
00416BE3    .  3BFA             cmp edi,edx
00416BE5    .  75 37            jnz short a2vmixer.00416C1E     ;  這部分的四個跳轉JNZ是判斷註冊碼的前四前是否是3、7、6、9
00416BE7    .  0FB65424 14      movzx edx,byte ptr ss:[esp+14]
00416BEC    .  0FB67C24 17      movzx edi,byte ptr ss:[esp+17]
00416BF1    .  83EA 30          sub edx,30
00416BF4    .  3BFA             cmp edi,edx
00416BF6    .  75 26            jnz short a2vmixer.00416C1E
00416BF8    .  0FB65424 15      movzx edx,byte ptr ss:[esp+15]
00416BFD    .  0FB67C24 18      movzx edi,byte ptr ss:[esp+18]
00416C02    .  83EA 30          sub edx,30
00416C05    .  3BFA             cmp edi,edx
00416C07    .  75 15            jnz short a2vmixer.00416C1E
00416C09    .  99               cdq
00416C0A    .  BF 0A000000      mov edi,0A                      ;  如果上面四個餘數正確的話,我們就快成功了,繼續往下走吧!
00416C0F    .  F7FF             idiv edi                        ;  這裡是使用者名稱的ASCii累加值除以A,EAX=0x227/A,餘數在EDX裡,EDX=1
00416C11    .  0FB6C2           movzx eax,dl                    ;  餘數1,送到EAX裡,EAX=1
00416C14    .  0FB6D1           movzx edx,cl                    ;  判斷我們假註冊碼的第五位數,是否為餘數1,不是就OVER了
00416C17    .  83EA 30          sub edx,30
00416C1A    .  3BC2             cmp eax,edx
00416C1C    .  74 3A            je short a2vmixer.00416C58      ;  相等的話就註冊成功了! 雖然要滿足8位註冊碼,但只有前5位起作用,後面N位無關緊要。
00416C1E    >  807C24 19 31     cmp byte ptr ss:[esp+19],31
00416C23    .  0F85 85000000    jnz a2vmixer.00416CAE
00416C29    .  807C24 13 32     cmp byte ptr ss:[esp+13],32
00416C2E    .  75 7E            jnz short a2vmixer.00416CAE
00416C30    .  8A5424 14        mov dl,byte ptr ss:[esp+14]
00416C34    .  B0 38            mov al,38
00416C36    .  3AD0             cmp dl,al
00416C38    .  75 74            jnz short a2vmixer.00416CAE
00416C3A    .  807C24 15 30     cmp byte ptr ss:[esp+15],30
00416C3F    .  75 6D            jnz short a2vmixer.00416CAE
00416C41    .  80F9 37          cmp cl,37
00416C44    .  75 68            jnz short a2vmixer.00416CAE
00416C46    .  384424 1A        cmp byte ptr ss:[esp+1A],al
00416C4A    .  75 62            jnz short a2vmixer.00416CAE
00416C4C    .  807C24 1B 33     cmp byte ptr ss:[esp+1B],33
00416C51    .  75 5B            jnz short a2vmixer.00416CAE
00416C53    .  80FB 35          cmp bl,35
00416C56    .  75 56            jnz short a2vmixer.00416CAE
00416C58    >  6A 00            push 0
00416C5A    .  6A 00            push 0                          ;  註冊成功對話方塊,然後把註冊碼寫到登錄檔裡。
00416C5C    .  68 98874400      push a2vmixer.00448798          ;  ASCII "Registration has succeeded!"
00416C61    .  E8 5A4F0200      call a2vmixer.0043BBC0
00416C66    .  8B7E 70          mov edi,dword ptr ds:[esi+70]
00416C69    .  E8 3B8E0200      call a2vmixer.0043FAA9
00416C6E    .  8B40 04          mov eax,dword ptr ds:[eax+4]
00416C71    .  57               push edi                        ; /Arg3
00416C72    .  68 547C4400      push a2vmixer.00447C54          ; |Arg2 = 00447C54 ASCII "username"
00416C77    .  68 4C7C4400      push a2vmixer.00447C4C          ; |Arg1 = 00447C4C ASCII "Option"
00416C7C    .  8BC8             mov ecx,eax                     ; |
00416C7E    .  E8 43500200      call a2vmixer.0043BCC6          ; \a2vmixer.0043BCC6
00416C83    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416C86    .  E8 1E8E0200      call a2vmixer.0043FAA9
00416C8B    .  8B40 04          mov eax,dword ptr ds:[eax+4]
00416C8E    .  57               push edi                        ; /Arg3
00416C8F    .  68 387C4400      push a2vmixer.00447C38          ; |Arg2 = 00447C38 ASCII "registration_code"
00416C94    .  68 4C7C4400      push a2vmixer.00447C4C          ; |Arg1 = 00447C4C ASCII "Option"
00416C99    .  8BC8             mov ecx,eax                     ; |
00416C9B    .  E8 26500200      call a2vmixer.0043BCC6          ; \a2vmixer.0043BCC6
00416CA0    .  5B               pop ebx
00416CA1    .  5F               pop edi
00416CA2    .  8BCE             mov ecx,esi
00416CA4    .  5E               pop esi
00416CA5    .  5D               pop ebp
00416CA6    .  83C4 0C          add esp,0C
00416CA9    .  E9 A4F10100      jmp a2vmixer.00435E52
00416CAE    >  6A 00            push 0
00416CB0    .  6A 00            push 0                          ;  錯誤對話方塊!
00416CB2    .  68 80874400      push a2vmixer.00448780          ;  ASCII "Registration failed!"
00416CB7    .  E8 044F0200      call a2vmixer.0043BBC0
00416CBC    .  5B               pop ebx
00416CBD    .  5F               pop edi
00416CBE    .  5E               pop esi
00416CBF    .  5D               pop ebp
00416CC0    .  83C4 0C          add esp,0C
00416CC3    .  C3               retn

--------------------------------------------------------------------------------
【破解總結】


註冊碼和使用者名稱有關,註冊碼必須不小於8位,8位裡只有前5位起作用,後面N位無關緊要!
--------------------------------------------------------------------------------

【演算法序號產生器】





#include <stdio.h>

int main()
{ int i,n,n1,n2,n3,n4,n5=0;
  char name[255]={0};


printf("Crack by zmw1224[CZG][DFCG]\n");
printf("___________________________\n");
printf("請輸入你的使用者名稱(使用者名稱大於2位):");
scanf("%s",&name);


n=strlen(name);

 for (i=0;i<n;i++)
    n5+=name[i];
      n5%=0xA;

n1=name[0]|0x41;
n1%=0xA;

n2=name[1]|0x32;
n2%=0xA;

n3=name[0]|0x56;
n3%=0xA;

n4=name[1]|0x4D;
n4%=0xA;




printf("你的註冊碼是:%d%d%d%d%d888",n1,n2,n3,n4,n5);


 return 0;
}
--------------------------------------------------------------------------------

【使用者名稱、密碼】


使用者名稱:zmw1224
註冊碼:37691888
--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!

相關文章