elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ASM con vb6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ASM con vb6  (Leído 4,778 veces)
arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
ASM con vb6
« en: 1 Marzo 2012, 16:26 pm »

sabéis si es posible usar código asm desde vb6 tal y como se hace desde C  ?
tenéis algún buen ejemplo, a ser posible sencillo de comprender ?

gracias


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: ASM con vb6
« Respuesta #1 en: 1 Marzo 2012, 16:33 pm »

Si se puede y hay varios ejemplos, aunque no se si sean facilmente entendibles para los que sepan ASM :xD

Re: Ayuda[Loadlibrary] Cargar apis sin declararlas.
[VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]

y hay mas buscando en google n.n


En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Re: ASM con vb6
« Respuesta #2 en: 1 Marzo 2012, 20:01 pm »

Hay dos formas principales:

1.- Usando un complemento
2.- Haciéndolo a mano directamente.

Del 2º ejemplo tienes una explicación clara aquí: Ensamblador en VB6

De la forma 1, es muy sencillo y en breve también escribiré sobre esto.
En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: ASM con vb6
« Respuesta #3 en: 1 Marzo 2012, 21:33 pm »

me ha parecido genial el método hecho a mano.
no obstante tengo curiosidad por ver ese método por medio de un complemento.

No obstante... y que hay de la velocidad de ejecución del código asm ? sigue siendo igual de rápido aún usándolo desde vb6 ?

por ejemplo, que sería más rápido, hacer un shr por medio de asm desde vb6 o usar el código shr como este ?

Código:
Private Function SHL(ByVal Value As Long, ByVal ShiftCount As Long) As Long
' by Jost Schwider, jost@schwider.de, 20011001
  Select Case ShiftCount
  Case 0&
    SHL = Value
  Case 1&
    If Value And &H40000000 Then
      SHL = (Value And &H3FFFFFFF) * &H2& Or &H80000000
    Else
      SHL = (Value And &H3FFFFFFF) * &H2&
    End If
  Case 2&
    If Value And &H20000000 Then
      SHL = (Value And &H1FFFFFFF) * &H4& Or &H80000000
    Else
      SHL = (Value And &H1FFFFFFF) * &H4&
    End If
  Case 3&
    If Value And &H10000000 Then
      SHL = (Value And &HFFFFFFF) * &H8& Or &H80000000
    Else
      SHL = (Value And &HFFFFFFF) * &H8&
    End If
  Case 4&
    If Value And &H8000000 Then
      SHL = (Value And &H7FFFFFF) * &H10& Or &H80000000
    Else
      SHL = (Value And &H7FFFFFF) * &H10&
    End If
  Case 5&
    If Value And &H4000000 Then
      SHL = (Value And &H3FFFFFF) * &H20& Or &H80000000
    Else
      SHL = (Value And &H3FFFFFF) * &H20&
    End If
  Case 6&
    If Value And &H2000000 Then
      SHL = (Value And &H1FFFFFF) * &H40& Or &H80000000
    Else
      SHL = (Value And &H1FFFFFF) * &H40&
    End If
  Case 7&
    If Value And &H1000000 Then
      SHL = (Value And &HFFFFFF) * &H80& Or &H80000000
    Else
      SHL = (Value And &HFFFFFF) * &H80&
    End If
  Case 8&
    If Value And &H800000 Then
      SHL = (Value And &H7FFFFF) * &H100& Or &H80000000
    Else
      SHL = (Value And &H7FFFFF) * &H100&
    End If
  Case 9&
    If Value And &H400000 Then
      SHL = (Value And &H3FFFFF) * &H200& Or &H80000000
    Else
      SHL = (Value And &H3FFFFF) * &H200&
    End If
  Case 10&
    If Value And &H200000 Then
      SHL = (Value And &H1FFFFF) * &H400& Or &H80000000
    Else
      SHL = (Value And &H1FFFFF) * &H400&
    End If
  Case 11&
    If Value And &H100000 Then
      SHL = (Value And &HFFFFF) * &H800& Or &H80000000
    Else
      SHL = (Value And &HFFFFF) * &H800&
    End If
  Case 12&
    If Value And &H80000 Then
      SHL = (Value And &H7FFFF) * &H1000& Or &H80000000
    Else
      SHL = (Value And &H7FFFF) * &H1000&
    End If
  Case 13&
    If Value And &H40000 Then
      SHL = (Value And &H3FFFF) * &H2000& Or &H80000000
    Else
      SHL = (Value And &H3FFFF) * &H2000&
    End If
  Case 14&
    If Value And &H20000 Then
      SHL = (Value And &H1FFFF) * &H4000& Or &H80000000
    Else
      SHL = (Value And &H1FFFF) * &H4000&
    End If
  Case 15&
    If Value And &H10000 Then
      SHL = (Value And &HFFFF&) * &H8000& Or &H80000000
    Else
      SHL = (Value And &HFFFF&) * &H8000&
    End If
  Case 16&
    If Value And &H8000& Then
      SHL = (Value And &H7FFF&) * &H10000 Or &H80000000
    Else
      SHL = (Value And &H7FFF&) * &H10000
    End If
  Case 17&
    If Value And &H4000& Then
      SHL = (Value And &H3FFF&) * &H20000 Or &H80000000
    Else
      SHL = (Value And &H3FFF&) * &H20000
    End If
  Case 18&
    If Value And &H2000& Then
      SHL = (Value And &H1FFF&) * &H40000 Or &H80000000
    Else
      SHL = (Value And &H1FFF&) * &H40000
    End If
  Case 19&
    If Value And &H1000& Then
      SHL = (Value And &HFFF&) * &H80000 Or &H80000000
    Else
      SHL = (Value And &HFFF&) * &H80000
    End If
  Case 20&
    If Value And &H800& Then
      SHL = (Value And &H7FF&) * &H100000 Or &H80000000
    Else
      SHL = (Value And &H7FF&) * &H100000
    End If
  Case 21&
    If Value And &H400& Then
      SHL = (Value And &H3FF&) * &H200000 Or &H80000000
    Else
      SHL = (Value And &H3FF&) * &H200000
    End If
  Case 22&
    If Value And &H200& Then
      SHL = (Value And &H1FF&) * &H400000 Or &H80000000
    Else
      SHL = (Value And &H1FF&) * &H400000
    End If
  Case 23&
    If Value And &H100& Then
      SHL = (Value And &HFF&) * &H800000 Or &H80000000
    Else
      SHL = (Value And &HFF&) * &H800000
    End If
  Case 24&
    If Value And &H80& Then
      SHL = (Value And &H7F&) * &H1000000 Or &H80000000
    Else
      SHL = (Value And &H7F&) * &H1000000
    End If
  Case 25&
    If Value And &H40& Then
      SHL = (Value And &H3F&) * &H2000000 Or &H80000000
    Else
      SHL = (Value And &H3F&) * &H2000000
    End If
  Case 26&
    If Value And &H20& Then
      SHL = (Value And &H1F&) * &H4000000 Or &H80000000
    Else
      SHL = (Value And &H1F&) * &H4000000
    End If
  Case 27&
    If Value And &H10& Then
      SHL = (Value And &HF&) * &H8000000 Or &H80000000
    Else
      SHL = (Value And &HF&) * &H8000000
    End If
  Case 28&
    If Value And &H8& Then
      SHL = (Value And &H7&) * &H10000000 Or &H80000000
    Else
      SHL = (Value And &H7&) * &H10000000
    End If
  Case 29&
    If Value And &H4& Then
      SHL = (Value And &H3&) * &H20000000 Or &H80000000
    Else
      SHL = (Value And &H3&) * &H20000000
    End If
  Case 30&
    If Value And &H2& Then
      SHL = (Value And &H1&) * &H40000000 Or &H80000000
    Else
      SHL = (Value And &H1&) * &H40000000
    End If
  Case 31&
    If Value And &H1& Then
      SHL = &H80000000
    Else
      SHL = &H0&
    End If
  End Select
End Function
« Última modificación: 1 Marzo 2012, 21:35 pm por arfgh » En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Re: ASM con vb6
« Respuesta #4 en: 2 Marzo 2012, 00:51 am »

1.- -"que hay de la velocidad de ejecución del código asm ? sigue siendo igual de rápido aún usándolo desde vb6 ?"

En el caso hecho a mano, se ejecuta el código directamente en ensamblador.

Los pasos son los siguientes:
-Visual Basic escribe byte a byte el código ensamblador en memoria y mediante la API CallWindowProc ejecuta ese código recién escrito.

Es decir, aparte de la ejecución del código, se pierde tiempo en escribir esos datos en memoria. (pero a no ser que el código sea extenso, el proceso es rápido).

Mi respuesta sería: es casi igual de rápido.

2.- "que sería más rápido, hacer un shr por medio de asm desde vb6 o usar el código shr como este ?".
Tienes una solución muy sencilla: haz los dos ejemplos y comparas el código ensamblador generado. Yo creo que será más rápido el asm en vb6. (pero no lo aseguro al 100%)
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: ASM con vb6
« Respuesta #5 en: 4 Marzo 2012, 00:29 am »

Específicamente esa función es realmente rápida. Pero aún así podrás comprobar que ejecutando el ensamblador es ligeramente más rápido, sobretodo si haces muchísimas llamadas (ya que el código sólo ha de meterse una vez en memoria)
En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: ASM con vb6
« Respuesta #6 en: 6 Agosto 2014, 17:40 pm »

al final no pusiste como hacer de la manera sencilla con el complemento :(
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines