Assembly 汇编程序中的加密和解密

Assembly 汇编程序中的加密和解密,assembly,x86,reverse-engineering,Assembly,X86,Reverse Engineering,我一直在编写一些汇编代码,它对某些东西进行加密,然后要求它再次解密 这是代码,我希望能得到一些关于如何在汇编中编写解密代码的帮助 push ebx push edx push ecx movzx edx, byte ptr[eax] and edx, 0x43 cmp edx, 0x00 j

我一直在编写一些汇编代码,它对某些东西进行加密,然后要求它再次解密

这是代码,我希望能得到一些关于如何在汇编中编写解密代码的帮助

push   ebx                  
push   edx                  
push   ecx                   
movzx  edx, byte ptr[eax]   
and    edx, 0x43                 
cmp    edx, 0x00                
jnz    x16                  
mov    edx, 0x07                
inc    dl   //x16 start here
mov    dword ptr[eax], edx  
pop    ebx      
dec    ebx  //y16 start here    
dec    edx      
jnz    y16      
not    bl                               
pop    edx                              
mov    eax, ebx                         
pop    ebx                                                               
ret                                 

首先像我一样简化代码,然后看看它能给你带来什么

 push   ebx
 push   edx

 movzx  edx, byte ptr[eax]   
 and    dl, 0x43                 
 jnz    x16                  
 mov    dl, 0x07                
x16:
 inc    dl
 mov    dword ptr[eax], edx  ;Is this correct?

 mov    ebx, ecx
 sub    ebx, edx
 not    bl
 mov    eax, ebx

 pop    edx
 pop    ebx                                                               
 ret

这对于所有输入来说都是不可逆的。和edx,0x43显然只保留3位。此外,y16循环也没有意义,当输入是字节时写出dword也是可疑的。我得说这是坏代码。