📄 b-win32.asm
字号:
; Don't even think of reading this code ; It was automatically generated by bf-586.pl ; Which is a perl program used to generate the x86 assember for ; any of elf, a.out, BSDI,Win32, or Solaris ; eric <eay@cryptsoft.com> ; TITLE bf-586.asm .486.model FLAT_TEXT SEGMENTPUBLIC _BF_encrypt_BF_encrypt PROC NEAR ; push ebp push ebx mov ebx, DWORD PTR 12[esp] mov ebp, DWORD PTR 16[esp] push esi push edi ; Load the 2 words mov edi, DWORD PTR [ebx] mov esi, DWORD PTR 4[ebx] xor eax, eax mov ebx, DWORD PTR [ebp] xor ecx, ecx xor edi, ebx ; ; Round 0 mov edx, DWORD PTR 4[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 1 mov edx, DWORD PTR 8[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 2 mov edx, DWORD PTR 12[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 3 mov edx, DWORD PTR 16[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 4 mov edx, DWORD PTR 20[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 5 mov edx, DWORD PTR 24[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 6 mov edx, DWORD PTR 28[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 7 mov edx, DWORD PTR 32[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 8 mov edx, DWORD PTR 36[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 9 mov edx, DWORD PTR 40[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 10 mov edx, DWORD PTR 44[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 11 mov edx, DWORD PTR 48[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 12 mov edx, DWORD PTR 52[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 13 mov edx, DWORD PTR 56[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 14 mov edx, DWORD PTR 60[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 15 mov edx, DWORD PTR 64[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx ; Load parameter 0 (16) enc=1 mov eax, DWORD PTR 20[esp] xor edi, ebx mov edx, DWORD PTR 68[ebp] xor esi, edx mov DWORD PTR 4[eax],edi mov DWORD PTR [eax],esi pop edi pop esi pop ebx pop ebp ret_BF_encrypt ENDP_TEXT ENDS_TEXT SEGMENTPUBLIC _BF_decrypt_BF_decrypt PROC NEAR ; push ebp push ebx mov ebx, DWORD PTR 12[esp] mov ebp, DWORD PTR 16[esp] push esi push edi ; Load the 2 words mov edi, DWORD PTR [ebx] mov esi, DWORD PTR 4[ebx] xor eax, eax mov ebx, DWORD PTR 68[ebp] xor ecx, ecx xor edi, ebx ; ; Round 16 mov edx, DWORD PTR 64[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 15 mov edx, DWORD PTR 60[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor edi, ebx ; ; Round 14 mov edx, DWORD PTR 56[ebp] mov ebx, edi xor esi, edx shr ebx, 16 mov edx, edi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp] add ebx, edx xor eax, eax xor esi, ebx ; ; Round 13 mov edx, DWORD PTR 52[ebp] mov ebx, esi xor edi, edx shr ebx, 16 mov edx, esi mov al, bh and ebx, 255 mov cl, dh and edx, 255 mov eax, DWORD PTR 72[eax*4+ebp] mov ebx, DWORD PTR 1096[ebx*4+ebp] add ebx, eax mov eax, DWORD PTR 2120[ecx*4+ebp] xor ebx, eax mov edx, DWORD PTR 3144[edx*4+ebp]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -