📄 c-win32.asm
字号:
and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] add ecx, ebx xor esi, ecx$L001cast_dec_skip: ; round 11 mov edx, DWORD PTR 88[ebp] mov ecx, DWORD PTR 92[ebp] sub edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] sub ecx, ebx xor edi, ecx ; round 10 mov edx, DWORD PTR 80[ebp] mov ecx, DWORD PTR 84[ebp] xor edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] xor ecx, ebx xor esi, ecx ; round 9 mov edx, DWORD PTR 72[ebp] mov ecx, DWORD PTR 76[ebp] add edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] add ecx, ebx xor edi, ecx ; round 8 mov edx, DWORD PTR 64[ebp] mov ecx, DWORD PTR 68[ebp] sub edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] sub ecx, ebx xor esi, ecx ; round 7 mov edx, DWORD PTR 56[ebp] mov ecx, DWORD PTR 60[ebp] xor edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] xor ecx, ebx xor edi, ecx ; round 6 mov edx, DWORD PTR 48[ebp] mov ecx, DWORD PTR 52[ebp] add edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] add ecx, ebx xor esi, ecx ; round 5 mov edx, DWORD PTR 40[ebp] mov ecx, DWORD PTR 44[ebp] sub edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] sub ecx, ebx xor edi, ecx ; round 4 mov edx, DWORD PTR 32[ebp] mov ecx, DWORD PTR 36[ebp] xor edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] xor ecx, ebx xor esi, ecx ; round 3 mov edx, DWORD PTR 24[ebp] mov ecx, DWORD PTR 28[ebp] add edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] add ecx, ebx xor edi, ecx ; round 2 mov edx, DWORD PTR 16[ebp] mov ecx, DWORD PTR 20[ebp] sub edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] sub ecx, ebx xor esi, ecx ; round 1 mov edx, DWORD PTR 8[ebp] mov ecx, DWORD PTR 12[ebp] xor edx, esi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] add ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] xor ecx, ebx xor edi, ecx ; round 0 mov edx, DWORD PTR [ebp] mov ecx, DWORD PTR 4[ebp] add edx, edi rol edx, cl mov ebx, edx xor ecx, ecx mov cl, dh and ebx, 255 shr edx, 16 xor eax, eax mov al, dh and edx, 255 mov ecx, DWORD PTR _CAST_S_table0[ecx*4] mov ebx, DWORD PTR _CAST_S_table1[ebx*4] xor ecx, ebx mov ebx, DWORD PTR _CAST_S_table2[eax*4] sub ecx, ebx mov ebx, DWORD PTR _CAST_S_table3[edx*4] add ecx, ebx xor esi, ecx nop mov eax, DWORD PTR 20[esp] mov DWORD PTR 4[eax],edi mov DWORD PTR [eax],esi pop edi pop esi pop ebx pop ebp ret_CAST_decrypt ENDP_TEXT ENDS_TEXT SEGMENTPUBLIC _CAST_cbc_encrypt_CAST_cbc_encrypt PROC NEAR ; push ebp push ebx push esi push edi mov ebp, DWORD PTR 28[esp] ; getting iv ptr from parameter 4 mov ebx, DWORD PTR 36[esp] mov esi, DWORD PTR [ebx] mov edi, DWORD PTR 4[ebx] push edi push esi push edi push esi mov ebx, esp mov esi, DWORD PTR 36[esp] mov edi, DWORD PTR 40[esp] ; getting encrypt flag from parameter 5 mov ecx, DWORD PTR 56[esp] ; get and push parameter 3 mov eax, DWORD PTR 48[esp] push eax push ebx cmp ecx, 0 jz $L002decrypt and ebp, 4294967288 mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] jz $L003encrypt_finishL004encrypt_loop: mov ecx, DWORD PTR [esi] mov edx, DWORD PTR 4[esi] xor eax, ecx xor ebx, edx bswap eax bswap ebx mov DWORD PTR 8[esp],eax mov DWORD PTR 12[esp],ebx call _CAST_encrypt mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] bswap eax bswap ebx mov DWORD PTR [edi],eax mov DWORD PTR 4[edi],ebx add esi, 8 add edi, 8 sub ebp, 8 jnz L004encrypt_loop$L003encrypt_finish: mov ebp, DWORD PTR 52[esp] and ebp, 7 jz $L005finish xor ecx, ecx xor edx, edx mov ebp, DWORD PTR $L006cbc_enc_jmp_table[ebp*4] jmp ebpL007ej7: xor edx, edx mov dh, BYTE PTR 6[esi] shl edx, 8L008ej6: mov dh, BYTE PTR 5[esi]L009ej5: mov dl, BYTE PTR 4[esi]L010ej4: mov ecx, DWORD PTR [esi] jmp $L011ejendL012ej3: mov ch, BYTE PTR 2[esi] xor ecx, ecx shl ecx, 8L013ej2: mov ch, BYTE PTR 1[esi]L014ej1: mov cl, BYTE PTR [esi]$L011ejend: xor eax, ecx xor ebx, edx bswap eax bswap ebx mov DWORD PTR 8[esp],eax mov DWORD PTR 12[esp],ebx call _CAST_encrypt mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] bswap eax bswap ebx mov DWORD PTR [edi],eax mov DWORD PTR 4[edi],ebx jmp $L005finish$L002decrypt: and ebp, 4294967288 mov eax, DWORD PTR 16[esp] mov ebx, DWORD PTR 20[esp] jz $L015decrypt_finishL016decrypt_loop: mov eax, DWORD PTR [esi] mov ebx, DWORD PTR 4[esi] bswap eax bswap ebx mov DWORD PTR 8[esp],eax mov DWORD PTR 12[esp],ebx call _CAST_decrypt mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] bswap eax bswap ebx mov ecx, DWORD PTR 16[esp] mov edx, DWORD PTR 20[esp] xor ecx, eax xor edx, ebx mov eax, DWORD PTR [esi] mov ebx, DWORD PTR 4[esi] mov DWORD PTR [edi],ecx mov DWORD PTR 4[edi],edx mov DWORD PTR 16[esp],eax mov DWORD PTR 20[esp],ebx add esi, 8 add edi, 8 sub ebp, 8 jnz L016decrypt_loop$L015decrypt_finish: mov ebp, DWORD PTR 52[esp] and ebp, 7 jz $L005finish mov eax, DWORD PTR [esi] mov ebx, DWORD PTR 4[esi] bswap eax bswap ebx mov DWORD PTR 8[esp],eax mov DWORD PTR 12[esp],ebx call _CAST_decrypt mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] bswap eax bswap ebx mov ecx, DWORD PTR 16[esp] mov edx, DWORD PTR 20[esp] xor ecx, eax xor edx, ebx mov eax, DWORD PTR [esi] mov ebx, DWORD PTR 4[esi]L017dj7: ror edx, 16 mov BYTE PTR 6[edi],dl shr edx, 16L018dj6: mov BYTE PTR 5[edi],dhL019dj5: mov BYTE PTR 4[edi],dlL020dj4: mov DWORD PTR [edi],ecx jmp $L021djendL022dj3: ror ecx, 16 mov BYTE PTR 2[edi],cl shl ecx, 16L023dj2: mov BYTE PTR 1[esi],chL024dj1: mov BYTE PTR [esi], cl$L021djend: jmp $L005finish$L005finish: mov ecx, DWORD PTR 60[esp] add esp, 24 mov DWORD PTR [ecx],eax mov DWORD PTR 4[ecx],ebx pop edi pop esi pop ebx pop ebp ret$L006cbc_enc_jmp_table: DD 0 DD L014ej1 DD L013ej2 DD L012ej3 DD L010ej4 DD L009ej5 DD L008ej6 DD L007ej7L025cbc_dec_jmp_table: DD 0 DD L024dj1 DD L023dj2 DD L022dj3 DD L020dj4 DD L019dj5 DD L018dj6 DD L017dj7_CAST_cbc_encrypt ENDP_TEXT ENDSEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -