⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tea.asm

📁 The dinamyc link library that contains an implementation of SHA1, SHA512, CRC32, CRC32b, Adler32, Tw
💻 ASM
字号:

format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.text' code readable executable

proc DllEntryPoint,hInstance,dwReason,lpReserved
     cmp [dwReason],1
     jne @f
     invoke DisableThreadLibraryCalls,[hInstance]
@@:  xor eax,eax
     inc eax
     ret
endp

proc TEA_EncryptBlock uses edi esi
     mov edi,[ebx]
     mov esi,[ebx+4]
     bswap edi
     bswap esi
     xor edx,edx
     mov ecx,16
@@:  add edx,0x9E3779B9
     mov eax,esi
     shl eax,4
     add edi,eax
     mov eax,esi
     xor eax,[key]
     add edi,eax
     mov eax,esi
     shr eax,5
     xor eax,edx
     add edi,eax
     add edi,[key+4]
     mov eax,edi
     shl eax,4
     add esi,eax
     mov eax,edi
     xor eax,[key+8]
     add esi,eax
     mov eax,edi
     shr eax,5
     xor eax,edx
     add esi,eax
     add esi,[key+12]
     loop @b
     bswap edi
     bswap esi
     mov [ebx],edi
     mov [ebx+4],esi
     ret
endp

proc XTEA_EncryptBlock uses edi esi ;ebx
     mov edi,[xchain]
     mov esi,[xchain+4]
     bswap edi
     bswap esi
     xor edx,edx
     mov ecx,32
@@:  mov eax,edx
     and eax,3
     add edi,[xkey+eax*4]
     mov eax,edx
     xor eax,esi
     add edi,eax
     mov eax,esi
     mov ebx,esi
     shl eax,4
     shr ebx,5
     xor eax,ebx
     add edi,eax
     add edx,0x9E3779B9
     mov eax,edx
     shr eax,11
     and eax,3
     add esi,[xkey+eax*4]
     mov eax,edx
     xor eax,edi
     add esi,eax
     mov eax,edi
     mov ebx,edi
     shl eax,4
     shr ebx,5
     xor eax,ebx
     add esi,eax
     loop @b
     bswap edi
     bswap esi
     mov [xchain],edi
     mov [xchain+4],esi
     ret
endp

proc TEA_Init uses ebx edi esi
     mov esi,eax
     mov edi,key
     shr ecx,3
     mov ebx,16
     cmp ecx,ebx
     cmova ecx,ebx
     sub ebx,ecx
     cld
     rep movsb
     xor eax,eax
     mov ecx,ebx
     rep stosb
     mov eax,[edi-16]
     bswap eax
     mov [edi-16],eax
     mov eax,[edi-12]
     bswap eax
     mov [edi-12],eax
     mov eax,[edi-8]
     bswap eax
     mov [edi-8],eax
     mov eax,[edi-4]
     bswap eax
     mov [edi-4],eax
     mov ebx,chain
     or edx,edx
     jnz @f
     xor eax,eax
     mov [ebx],eax
     mov [ebx+4],eax
     call TEA_EncryptBlock
     jmp .r
@@:  mov eax,[edx]
     mov [ebx],eax
     mov eax,[edx+4]
     mov [ebx+4],eax
.r:  ret
endp

proc XTEA_Init uses ebx edi esi
     mov esi,eax
     mov edi,xkey
     shr ecx,3
     mov ebx,16
     cmp ecx,ebx
     cmova ecx,ebx
     sub ebx,ecx
     cld
     rep movsb
     xor eax,eax
     mov ecx,ebx
     rep stosb
     mov eax,[edi-16]
     bswap eax
     mov [edi-16],eax
     mov eax,[edi-12]
     bswap eax
     mov [edi-12],eax
     mov eax,[edi-8]
     bswap eax
     mov [edi-8],eax
     mov eax,[edi-4]
     bswap eax
     mov [edi-4],eax
     or edx,edx
     jnz @f
     xor eax,eax
     mov [xchain],eax
     mov [xchain+4],eax
     call XTEA_EncryptBlock
     jmp .r
@@:  mov eax,[edx]
     mov [xchain],eax
     mov eax,[edx+4]
     mov [xchain+4],eax
.r:  ret
endp

proc TEA_OFB_Crypt uses ebx edi esi
     mov edi,eax
     mov esi,edx
     mov ebx,chain
     push esi
     shr esi,3
     jz .2
@@:  call TEA_EncryptBlock
     mov eax,[ebx]
     xor [edi],eax
     mov eax,[ebx+4]
     xor [edi+4],eax
     add edi,8
     dec esi
     jnz @b
.2:  pop esi
     and esi,7
     jz .r
     call TEA_EncryptBlock
     xor ecx,ecx
@@:  cmp ecx,esi
     jnb .r
     mov al,[ebx+ecx]
     xor [edi+ecx],al
     inc ecx
     jmp @b
.r:  ret
endp

proc XTEA_OFB_Crypt uses ebx edi esi
     mov edi,eax
     mov esi,edx
     push esi
     shr esi,3
     jz .2
@@:  call XTEA_EncryptBlock
     mov eax,[xchain]
     xor [edi],eax
     mov eax,[xchain+4]
     xor [edi+4],eax
     add edi,8
     dec esi
     jnz @b
.2:  pop esi
     and esi,7
     jz .r
     call XTEA_EncryptBlock
     xor ecx,ecx
@@:  cmp ecx,esi
     jnb .r
     mov al,byte[xchain+ecx]
     xor [edi+ecx],al
     inc ecx
     jmp @b
.r:  ret
endp

section '.data' data readable writeable

key dd 4 dup (?)
chain dd 2 dup (?)

xkey dd 4 dup (?)
xchain dd 2 dup (?)

data import

  library kernel32,'KERNEL32.DLL'

  import kernel32,\
	 DisableThreadLibraryCalls,'DisableThreadLibraryCalls'

end data

data export

  export 'TEA.DLL',\
	 TEA_Init,'Tea16Init',\
	 TEA_OFB_Crypt,'Tea16Crypt',\
	 XTEA_Init,'Xtea32Init',\
	 XTEA_OFB_Crypt,'Xtea32Crypt'

end data

section '.reloc' fixups data discardable

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -