Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karcrack

#1691
Bueno, lo he intentado, pero no he podido... la verdad, esto de las inyecciones.. :-[ :xD

Bueno, a ver si tienes tiempo y sigues el Tutorial de tu Blog... el de inyecciones...  :D, que falta me hace! xD

Saludos :D

PD: Tienes un poco desactualizado el blog no?
#1692
 :o Me encanta :D Hace tiempo que quiero aprender de esto ;D

Solo una cosa, que compilador de C/C++ se usara? MS Visual Studio?

Saludos :o
#1693
Simplemente porque es mas comodo al menos a mi parecer. Si cualquier persona tiene problemas con las clases que lo pasen a modulo, que como tu dices se puede hacer perfectamente  ;)

Saludos :D
#1694
Bueno, como prometi aqui:

CitarCrear aplicaciones de Consola con VB {INTERMEDIO}

Aqui traigo la Clase:

Código (vb) [Seleccionar]
Option Explicit

'-----------------------------------------
'Autor: Karcrack                          |
'Creditos: MSDN                           |
'Fecha: 10/10/08                          |
'Web: http://foro.fire-software.net       |
'Utilidad: Ejemplo de uso de las APIs para|
'enviar y recibir informacion con         |
'aplicaciones de Command Line.            |
'=========================================|
'Puedes distribuir libremente este codigo |
'Siempre que pongas el autor.             |
'------------------------------------------

Enum Colors
    Negro = &H0
    Azul = &H1
    Verde = &H2
    AguaMarina = &H3
    Red = &H4
    Purpura = &H5
    Amarillo = &H6
    Blanco = &H7
    Gris = &H8
    AzulClaro = &H9
    VerdeClaro = &HA&
    AguamarinaClaro = &HB&
    RojoClaro = &HC&
    PurpuraClaro = &HD&
    AmarilloClaro = &HE&
    BlancoBrillante = &HF&
End Enum

Private Const ENABLE_LINE_INPUT = &H2&
Private Const ENABLE_ECHO_INPUT = &H4&
Private Const ENABLE_MOUSE_INPUT = &H10&
Private Const ENABLE_PROCESSED_INPUT = &H1&
Private Const ENABLE_WINDOW_INPUT = &H8&
Private Const ENABLE_PROCESSED_OUTPUT = &H1&
Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2&
Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_INPUT_HANDLE = -10&
Private Const STD_ERROR_HANDLE = -12&
Private Const INVALID_HANDLE_VALUE = -1&

Private mvarTitle   As String
Private mvarFColor  As Double
Private mvarBColor  As Double
Private hCMDIn      As Double
Private hCMDOut     As Double

Private Declare Function AllocConsole Lib "kernel32.dll" () As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long
Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

Public Function GetData(Optional ByVal dCharacters As Double, Optional ByVal bLine As Boolean) As String
    Dim lPos            As Long

    GetData = String$(IIf(dCharacters = 0, 500, dCharacters), 0)
   
    Call ReadConsole(hCMDIn, GetData, Len(GetData), lPos, vbNull)
    GetData = Left$(GetData, lPos)
   
    If bLine = True Then
        GetData = Mid$(GetData, InStrRev(GetData, vbCrLf))
    End If
End Function

Public Function SendData(ByVal sData As String, Optional ByVal dNewFColor As Colors, Optional ByVal dNewBColor As Colors) As Boolean
    Dim dLenWritten     As Long
    Dim Color1          As Long
    Dim Color2          As Long
   
    If dNewFColor Then
        Color1 = dNewFColor
    Else
        Color1 = mvarFColor
    End If
   
    If dNewBColor Then
        Color2 = dNewBColor
    Else
        Color2 = mvarBColor
    End If

    Call SetConsoleTextAttribute(hCMDOut, Color1 Or Color2)
    Call WriteConsole(hCMDOut, ByVal sData, Len(sData), dLenWritten, ByVal 0&)
    If dLenWritten = Len(sData) Then
        SendData = True
    End If
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Function

Public Property Let ForeColor(ByVal vData As Colors)
    mvarFColor = vData
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Property

Public Property Get ForeColor() As Colors
    ForeColor = mvarFColor
End Property

Public Property Let BackColor(ByVal vData As Colors)
    mvarBColor = vData
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Property

Public Property Get BackColor() As Colors
    BackColor = mvarBColor
End Property

Public Property Let Title(ByVal vData As String)
    mvarTitle = vData
    Call SetConsoleTitle(mvarTitle)
End Property

Public Property Get Title() As String
    Title = mvarTitle
End Property

Private Sub Class_Initialize()
    If App.LogMode = 0 Then AllocConsole
    hCMDOut = GetStdHandle(STD_OUTPUT_HANDLE)
    hCMDIn = GetStdHandle(STD_INPUT_HANDLE)
    Call SetConsoleTitle(mvarTitle)
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Sub

Private Sub Class_Terminate()
    CloseHandle hCMDOut
    CloseHandle hCMDIn
    If App.LogMode = 0 Then FreeConsole
End Sub


Aqui la adjunto con algunos ejemplos:

CitarEjemplos clase cCommandLine

Saludos :D
#1695
Indice:

  • Introduccion
  • Manos a la obra
  • Salida
  • Entrada
    • Finalizando
    • Ejemplo
    • Despedida




    Introduccion:

    Todo el mundo sabe que una aplicacion de consola es una aplicacion que se muestra desde la linea de comandos (CMD.exe,Command Prompt...).

    Una captura para que quede aun mas claro:






    Manos a la obra:

    En este manual, como es nivel 'intermedio', explicare el uso de In/Out (Entrada/Salida) usando FSO (FileSystemObject). Envez de usando las APIs, seguramente saque de aqui un tiempo una clase para hacerlo usando APIs.

    La funciones esta perfectamente comentadas para que no haya ningunas dudas ;)

    Salida:

    Aqui esta la funcion para enviar algo a nuestra consola:

    Código (vb) [Seleccionar]
    Public Function SendCMD(ByVal sData As String) As Boolean
        'Si hay algun error devuelve False, si todo ha ido bien devuelve True
        On Error GoTo Fallo
       
        Dim FSO         As Object
        Dim sOut        As Object
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
        'Llamamos a la funcion que envia la informacion
        Call sOut.WriteLine(sData)
        'Descargamos los objetos
        Set sOut = Nothing
        Set FSO = Nothing
        'Devolvemos True, todo ha ido bien
        SendCMD = True
        'Salimos de la funcion
        Exit Function
    Fallo:
        'Algo fallo, devolvemos False
        SendCMD = False
    End Function


    Entrada:

    Esta funcion obtiene los datos que hay en nuestro Command Prompt

    Código (vb) [Seleccionar]
    Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
        Dim FSO         As Object
        Dim sIn         As Object
       
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
       
        If ReadLine = False Then
            'Si no queremos la ultima linea
            If Caracteres = 0 Then
                'Si lo queremos todo
                GetCMD = sIn.ReadAll
            Else
                'Si solo queremos los ultimos n Caracteres
                GetCMD = sIn.Read(Caracteres)
            End If
        Else
            'Si queremos solo la ultima linea
            GetCMD = sIn.ReadLine
        End If
        'Descargamos los objetos
        Set sIn = Nothing
        Set FSO = Nothing
    End Function





    Finalizando:

    Una vez hemos codeado nuestra aplicacion y esta terminada del todo hemos de compilarla de forma normal. Pero para que se puede ejecutar desde el CMD.exe hemos de modificar el ejecutable, para hacerlo nos serviremos de este comando del LINK.exe:

    LINK /EDIT /SUBSYSTEM:CONSOLE <Ruta Ejecutable>

    He hecho un diminuto script VBS para que al arrastrar nuestro ejecutable lo transforme en Command Prompt compatible ;) aqui esta, para usarlo habeis de guardarlo con el bloc de notas en formato *.vbs y arrastrar el ejecutable que querais modificar.

    Dim StrLINK     ,StrEXE      ,WSHShell   

    'Ruta del LINK.exe de la carpeta VB
    StrLINK = """C:\Archivos de programa\Microsoft Visual Studio\VB98\LINK.EXE"""
    'Ruta del ejecutable que arrastras
    StrEXE = """" & WScript.Arguments(0) & """"
    Set WSHShell = CreateObject("WScript.Shell")

    WSHShell.Run StrLINK & " /EDIT /SUBSYSTEM:CONSOLE " & StrEXE , 0

    Set WSHShell = Nothing
    WScript.Echo "Finalizado!!"


    Una vez nuestro ejecutable ya ha sido editado para que se ejecute por linea de comandos ya podra ser utilizado :D.




    Ejemplo:

    Este es un codigo de ejemplo de una calculadora :D (Tambien lo adjunto al Post)

    En un formulario:
    Option Explicit

    Private Sub Form_Load()
        Dim Numero1     As Long
        Dim Numero2     As Long
        Dim Operacion   As String
        Dim Resultado   As Double
       
        'Para que no se vea la ventana
        Form1.Visible = False
        'Pedimos el primer numero
        Call SendCMD("Introduce el primer numero:")
        'Lo obtenemos
        Numero1 = GetCMD(True)
        'Pedimos el segundo
        Call SendCMD("Introduce el segundo numero:")
        'Lo obtenemos
        Numero2 = GetCMD(True)
        'Pedimos la operacion
        Call SendCMD("Introduce la operacion:" & vbCrLf & " + para suma" & vbCrLf & " - para resta" & vbCrLf & " * para multiplicacion" & vbCrLf & " / para division")
        'La obtenemos
        Operacion = GetCMD(False, 1)
        'Hacemos la operacion
        Select Case Operacion
            Case "+"
                Resultado = Numero1 + Numero2
            Case "-"
                Resultado = Numero1 - Numero2
            Case "*"
                Resultado = Numero1 * Numero2
            Case "/"
                Resultado = Numero1 / Numero2
        End Select
        'Devolvemos el resultado
        Call SendCMD(Resultado & vbCrLf)
        End
    End Sub

    Public Function SendCMD(ByVal sData As String) As Boolean
        'Si hay algun error devuelve False, si todo ha ido bien devuelve True
        On Error GoTo Fallo
       
        Dim FSO         As Object
        Dim sOut        As Object
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
        'Llamamos a la funcion que envia la informacion
        Call sOut.WriteLine(sData)
        'Descargamos los objetos
        Set sOut = Nothing
        Set FSO = Nothing
        'Devolvemos True, todo ha ido bien
        SendCMD = True
        'Salimos de la funcion
        Exit Function
    Fallo:
        'Algo fallo, devolvemos False
        SendCMD = False
    End Function

    Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
        Dim FSO         As Object
        Dim sIn         As Object
       
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
       
        If ReadLine = False Then
            'Si no queremos la ultima linea
            If Caracteres = 0 Then
                'Si lo queremos todo
                GetCMD = sIn.ReadAll
            Else
                'Si solo queremos los ultimos n Caracteres
                GetCMD = sIn.Read(Caracteres)
            End If
        Else
            'Si queremos solo la ultima linea
            GetCMD = sIn.ReadLine
        End If
        'Descargamos los objetos
        Set sIn = Nothing
        Set FSO = Nothing
    End Function





    Despedida:

    Bueno, ya esta todo explicado :D, cualquier duda avisen :D.
    De aqui un tiempo sacare una clase que permitira hacer esto, pero con APIs, ademas de permitir cambiar el color al texto y otras cosas :P.

    Saludos :D, espero que hayan aprendido mucho :P

    Pueden distribuirlo libremente siempre que pongan la fuente y el autor, yo, Karcrack.
#1696
Cita de: aaronduran2 en  7 Octubre 2008, 15:14 PM
Sustituí el código que mencioné arriba por otro que comprobaba si el valor de keyCode era igual al valor de una tecla. Antes de hacerlo funcionaba correctamente.

Saludos.
Pega el codigo actual, talvez te falta llamar al API CallNextHook...

Saludos ;)
#1697
Cita de: aaronduran2 en  6 Octubre 2008, 23:28 PM
No es que mostrase un error, el IDE de VB se me cerraba repentinamente y me mostraba el típico error de enviar o no el informe de errores.

Saludos.
Bueno, supongo que te refieres a que se Crashea la IDE, sale un mensaje que no se pudo escribir en la memoria blabla?

Si es asi es porque haces el hook mal...

Saludos ;)
#1698
A que te refieres con que no fuiste capaz? Te dio algun error? No supiste hacerlo? No creo que tenga mucha dificultad, al menos si preguntas lo que yo creo xD...

Bueno, aprovecho para hacer propaganda :-X, para el Ezine de CodeMakers he hecho un manual de como hacer un Keylogger con Hooks en VB, no utiliza Arrays ni nada por el estilo... no creo que tarde mucho en salir la Ezine :P

Saludos :D
#1699
Si has de usar el metodo del Timer, el cual no me gusta demasiado :-\... prueba a obtener la 'Velocidad de Repeticion' del teclado, que esta en 'Panel De Control'/'Teclado'

Saludos :D
#1700
Cita de: cobein en  4 Octubre 2008, 23:26 PM
Gracias, mira que la libreria del FTP es de inyeccion, se puede hacer esto mismo ahi sin problemas pero vas a tener que hacer unos cuantos cambios importantes seguramente, por ejemplo reemplazar el byte array por memoria y punteros (HeapAlloc etc).
Vere lo que puedo hacer, si consigo algo lo mas seguro es que lo postee :rolleyes: :xD

Saludos :D