Autor
		 | 
		
			Tema: [Duda]Problema de tamaños  (Leído 3,695 veces)
		 | 
	 
 
	
		
			
				
					
						
							YST
							
								 
								
								  Desconectado
								Mensajes: 965
								
								 
								I'm you
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Hola, pasando el algoritmo de RC4 a asm tengo el siguiente problema y es que al hacer un xor a un byte el otro operando ( o como se diga    ) no puede ser un dword haber si alguien me ayuda a solucionar el problema      include 'win32ax.inc' .data cBuffer db 'Hola',0 cClave db 'Hola',0 s db 257 dup(0) b rb 20 largo dd ? .code start: stdcall Len,cBuffer dec eax push eax pop [largo] ;   For i = 0 To 255  ; DoEvents  ; s(i) = i  ;   Next i  mov eax,s mov byte[eax],0 inc eax mov ecx,256 .bucle1_: mov bl,byte[eax-1] inc bl mov  byte[eax] ,bl inc eax loop .bucle1_   ;    For i = 0 To 255 ;        DoEvents ;        j = (j + s(i) + Key(i Mod Len(sKey))) Mod 256 ;        tmp = s(i) ;        s(i) = s(j) ;        s(j) = tmp ;    Next i ;j = ebx ;ja = esi ;I = edi xor ebx,ebx mov edi,-1 .bucle2_: inc edi xor esi,esi mov esi,ebx movzx eax,byte[s+edi] add esi,eax stdcall lMod,edi,<stdcall Len,cClave> movzx eax,byte[cClave+eax] add esi,eax stdcall lMod,esi,256 mov ebx, eax mov eax,s mov cl,byte[eax+ebx] ; s(j) mov ch,byte[eax+edi] ; s(i) mov byte[eax+edi],cl mov byte[eax+ebx],ch cmp edi,255 jne .bucle2_ inc edi      ;   For l = 0 To UBound(Buffer)  ;       DoEvents  ;       i = (i + 1) Mod 256  ;       j = (j + s(i)) Mod 256  ;       tmp = s(i)  ;       s(i) = s(j)  ;       s(j) = tmp  ;       Buffer(l) = Buffer(l) Xor (s((s(i) + s(j)) Mod 256))  ;   Next l xor esi,esi  ;esi = l dec esi ; esi = -1 .bucle3_: inc esi mov eax,edi inc eax stdcall lMod,eax,256 mov edi,eax mov eax,ebx xor ecx,ecx movzx ecx,byte[s+edi] add eax,ecx stdcall lMod,eax,256 mov ebx,eax mov eax,s mov cl,byte[eax+ebx] ; s(j) mov ch,byte[eax+edi] ; s(i) mov byte[eax+edi],cl mov byte[eax+ebx],ch mov eax,cBuffer add cl,ch movzx eax,cl add eax,s stdcall lMod,eax,256 mov edx,cBuffer xor byte[edx+esi],eax      ; EL Problema esta aqui   cmp esi,[largo] jne .bucle3_     invoke ExitProcess,0 proc lMod,c1,c2 push edx xor edx,edx mov eax,[c1] idiv [c2] push edx pop eax pop edx ret endp   proc Len,cCadena   ;Funcion que mide la cadena push ecx edi mov ecx,-1 mov edi,[cCadena] mov al,0 repnz scasb mov eax,ecx not eax dec eax pop edi ecx ret endp .end start   
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							  Yo le enseñe a Kayser a usar objetos en ASM 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							YST
							
								 
								
								  Desconectado
								Mensajes: 965
								
								 
								I'm you
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Ya solucione el error terminando el algoritmo de cifrado   include 'win32ax.inc' .data cBuffer db 'Hello world',0 cPassword db 'Password',0     .code start: stdcall Len,cPassword mov ebx,eax stdcall Len,cBuffer stdcall RC4,cBuffer,cPassword,eax,ebx invoke MessageBox,0,cBuffer,0,0 invoke ExitProcess,0 proc RC4,pBuffer,pPassword,pTamñoBuffer,pTamPass locals s rb MAX_PATH endl pushad dec [pTamñoBuffer] ;   For i = 0 To 255  ; DoEvents  ; s(i) = i  ;   Next i  lea eax,[s] mov byte[eax],0 inc eax mov ecx,256 .bucle1_: mov bl,byte[eax-1] inc bl mov  byte[eax] ,bl inc eax loop .bucle1_   ;    For i = 0 To 255 ;        DoEvents ;        j = (j + s(i) + Key(i Mod Len(sKey))) Mod 256 ;        tmp = s(i) ;        s(i) = s(j) ;        s(j) = tmp ;    Next i ;j = ebx ;ja = esi ;I = edi xor ebx,ebx mov edi,-1 .bucle2_: inc edi xor esi,esi mov esi,ebx movzx eax,byte[s+edi] add esi,eax stdcall lMod,edi,[pTamPass] mov ecx,[pPassword] movzx eax,byte[ecx+eax] add esi,eax stdcall lMod,esi,256 mov ebx, eax lea eax,[s] mov cl,byte[eax+ebx] ; s(j) mov ch,byte[eax+edi] ; s(i) mov byte[eax+edi],cl mov byte[eax+ebx],ch cmp edi,255 jne .bucle2_ inc edi      ;   For l = 0 To UBound(Buffer)  ;       DoEvents  ;       i = (i + 1) Mod 256  ;       j = (j + s(i)) Mod 256  ;       tmp = s(i)  ;       s(i) = s(j)  ;       s(j) = tmp  ;       Buffer(l) = Buffer(l) Xor (s((s(i) + s(j)) Mod 256))  ;   Next l xor esi,esi  ;esi = l dec esi ; esi = -1 .bucle3_: inc esi mov eax,edi inc eax stdcall lMod,eax,256 mov edi,eax mov eax,ebx xor ecx,ecx movzx ecx,byte[s+edi] add eax,ecx stdcall lMod,eax,256 mov ebx,eax lea eax,[s] mov cl,byte[eax+ebx] ; s(j) mov ch,byte[eax+edi] ; s(i) mov byte[eax+edi],cl mov byte[eax+ebx],ch mov eax,[pBuffer] add cl,ch movzx eax,cl lea edx,[s] add eax,edx movzx eax,byte[eax] stdcall lMod,eax,256   mov edx,[pBuffer] xor byte[edx+esi],al   cmp esi,[pTamñoBuffer] jne .bucle3_ popad ret endp   proc lMod,c1,c2 push edx xor edx,edx mov eax,[c1] idiv [c2] push edx pop eax pop edx ret endp   proc Len,cCadena push ecx edi mov ecx,-1 mov edi,[cCadena] mov al,0 repnz scasb mov eax,ecx not eax dec eax pop edi ecx ret endp .end start 
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 25 Junio 2009, 07:18 am por YST »
								 | 
								
									 
									En línea
								 | 
							  
							 
							  Yo le enseñe a Kayser a usar objetos en ASM 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Yurix
							
								
								  Desconectado
								Mensajes: 72
								
								 
								Paz para la guerra y guerra por la paz
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Gracias , así lo hago yo !!!   Saludos y sigue así  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	| 
		
		
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							tamaños swap
							 
							GNU/Linux
						 | 
						
							linuxos
						 | 
						
							4
						 | 
						
							2,875
						 | 
						
							 
							
								24 Octubre 2011, 17:54 pm 
								por orvtech
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Dibujar e inicializar tablero de posibles distintos tamaños en C  [?] 
							« 1 2 3 4 5 » 
							Programación C/C++
						 | 
						
							dragonlady
						 | 
						
							45
						 | 
						
							15,756
						 | 
						
							 
							
								 9 Junio 2015, 00:28 am 
								por 0xFer
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Duda con WinForms y correcta adaptación a varios tamaños de pantalla
							 
							.NET (C#, VB.NET, ASP)
						 | 
						
							RevolucionVegana
						 | 
						
							4
						 | 
						
							4,688
						 | 
						
							 
							
								 2 Julio 2017, 09:52 am 
								por RevolucionVegana
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[Resuelto] Problema con resposive usando varios tamaños
							 
							Desarrollo Web
						 | 
						
							madoko
						 | 
						
							3
						 | 
						
							3,135
						 | 
						
							 
							
								14 Agosto 2017, 17:05 pm 
								por madoko
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Duda - varios tamaños misma imagen en /wp-content/uploads (wordpress)
							 
							Desarrollo Web
						 | 
						
							victorius
						 | 
						
							3
						 | 
						
							2,399
						 | 
						
							 
							
								28 Marzo 2019, 21:38 pm 
								por victorius
							
						 | 
					 
				 
			    |