Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TrashAmbishion en 1 Diciembre 2013, 19:21 pm



Título: Rotar Bits ( ROL ROR )
Publicado por: TrashAmbishion en 1 Diciembre 2013, 19:21 pm
Amigos alguien sabe como puedo emplear estas 2 funciones de ASM en .Net

Código
  1.  
  2. Public Shared Function RotateLeftByVal(value As UInteger, ByVal count As UInteger)
  3.        Return (value << count) Or (value >> (32 - count))
  4.    End Function
  5.  
  6.    Public Shared Function RotateRightByVal(ByVal value As UInteger, ByVal count As UInteger)
  7.        Return (value >> count) Or (value << (32 - count))
  8.    End Function
  9.  
  10.  

Tengo estas 2 funciones pero creo que no funcionan correctamente.. alguien que me pueda ayudar...

Thx


Título: Re: Rotar Bits ( ROL ROR )
Publicado por: Eleкtro en 1 Diciembre 2013, 19:34 pm
Para los que no sabemos ASM, ¿puedes mostrar el uso de las funciones originales (en ASM) y/o indicar que resultado esperas conseguir al llamar a cada función para poder darte una solución?

Saludos


Título: Re: Rotar Bits ( ROL ROR )
Publicado por: TrashAmbishion en 1 Diciembre 2013, 19:41 pm
Seguro bro

Aqui se explica como funcionan las 2 funciones ROR y ROL

http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_asm-t208188.0.html


Título: Re: Rotar Bits ( ROL ROR )
Publicado por: El Benjo en 3 Diciembre 2013, 20:55 pm
Quizá no te esté funcionando porque (según sé) en ASM las instrucciones ROR Y ROL regresan los bits desplazados nuevamente a la posición contraria de la variable y en .NET esos bits se descartan. Ejemplo al desplazar 2 bits:

ASMVB.NET
Bits originales: 11000011Bits originales: 11000011
Bits después del desplazamiento: 00001111Bits después del desplazamiento: 00000000


Título: Re: Rotar Bits ( ROL ROR )
Publicado por: TrashAmbishion en 4 Diciembre 2013, 01:30 am
Hola Benjo,

Eso lo tengo claro el operador que hace esto es >> y el << que en ASM es SHL y SHR, los que digo yo hacen la rotacion circular (Shift Circular Rotation) encontre una funcion en un proyecto que despues podre pero con algunos funciona y con otros no...

De madre, estoy a punto de dejarlo y esperar...

Salu2 y GRacias


Título: Re: Rotar Bits ( ROL ROR )
Publicado por: El Benjo en 5 Diciembre 2013, 21:48 pm
Para simular las funciones de rotación circulas la tienes realmente fácil y sólo necesitas crear una nueva variable para ello:

Código
  1.   Public Shared Function RotateLeftByVal(value As UInteger, ByVal count As UInteger)
  2.        Dim VT as UInteger
  3.        VT = value
  4.        VT >> (32 - count)
  5.        value << count
  6.        value += VT
  7.        Return value
  8.        'Return (value << count) Or (value >> (32 - count))
  9.    End Function
  10.  

Faltaría que modificaras la otra función.

El código no ha sido probado, pruébalo y nos dices si te ha servido. Saludos.  ;D