Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: iDDoS en 4 Abril 2015, 18:15 pm



Título: necesito ayuda! error de código al depurar!
Publicado por: iDDoS en 4 Abril 2015, 18:15 pm
buenas, pues estoy como loco buscando un keylogger en visual basic y creo que por fin he encontrado uno, incluso con su código fuente.
resulta que estaba todo perfecto pero cuando lo depuré me saltó este error y no sé de que se trata. aquí os dejo una imagen, por cierto, es un keylogger que envia logs al email.

http://www.imageshost.eu/image/Ypk

espero recibir ayuda y gracias de antemano!



Título: Re: necesito ayuda! error de código al depurar!
Publicado por: Miseryk en 5 Abril 2015, 02:12 am
Qué tipo de variable es result?

PD: .NET es un asco.


Título: Re: necesito ayuda! error de código al depurar!
Publicado por: iDDoS en 5 Abril 2015, 12:04 pm
la variable es Dim result As Integer


Título: Re: necesito ayuda! error de código al depurar!
Publicado por: tincopasan en 5 Abril 2015, 13:13 pm
se ve mu poco código, pero supongo que declaraste la función " GetAsyncKeyState " porque sino no hay forma que la use así nomás.

Ah y tiene más pinta de .net que de vb, tendría que ir en otro foro.


Título: Re: necesito ayuda! error de código al depurar!
Publicado por: Eleкtro en 5 Abril 2015, 16:19 pm
@Miseryk
Decir ".Net es un asco" no ayuda a nadie ni aporta nada, evitemos ese tipo de comentarios superficiales y sin argumentar, por no decir que es un comentario completamente falso y probablemente sea debido a una ignorancia sobre la plataforma .Net, ya que si ese es tu modo de defender un lenguaje inferior y obsoleto cómo vb6 pues... no lo comprendo, pero tampoco pretendo comprenderlo por que el comentario estuvo fuera de lugar.

@iDDoS
Trata siempre de publicar el código para un mejor análisis, aparte de la imagen que compartiste.

Una excepción del tipo PinvokeStackImbalance sucede cuando, después de una llamada a la plataforma de invocación (P/Invoking), el CLR detecta que la profundidad de la pila no coincide con la profundidad de la pila esperada, esto suele indicar que la firma de tus definiciones P/Invoke son incorrectas.

Yo lo primero que te recomendaría es deshacerte de ese código fuente, por que viendo la imagen el autor utiliza muy malas prácticas por todos lados y no me quiero imaginar el resto del código, así no vas a aprender bien, pero bueno, te explico, para intentar solucionar (algunos de) los fallos lo primero que debes hacer es revisar las definiciones P/Invoke que haya en ese código fuente y comprobar que las firmas de cada miembro sean correctas, empezando por la firma de la función GetAsyncKeyState, ajústala a la firma oficial:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx

Código
  1. <DllImport("user32.dll", PreserveSig:=True, SetLastError:=False, CharSet:=CharSet.Auto)>
  2. Private Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
  3. End Function

Reemplaza la función "GetShift" de ese código, por esta otra (es practicamente lo mismo):
Código
  1. Public Function IsShiftPressed() As Boolean
  2.    Return Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey))
  3. End Function

Te muestro un ejemplo (incompleto) de iteración:
Código
  1. Dim result As Short = 0
  2.  
  3. For Each key As Keys In [Enum].GetValues(GetType(Keys))
  4.    result = GetAsyncKeyState(key)
  5.    Debug.WriteLine(String.Format("Key: {0}; Result: {1}", key.ToString, result))
  6. Next key

Saludos