[HOOK CLAVIER] FICHIER TEXTE AVEC GESTION DES DEAD KEYS [DEV-C++ 4.9.8.10]
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
31 juil. 2004 à 13:36
cs_bicoun
Messages postés2Date d'inscriptionjeudi 3 juillet 2003StatutMembreDernière intervention30 juin 2017
-
30 juin 2017 à 18:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_bicoun
Messages postés2Date d'inscriptionjeudi 3 juillet 2003StatutMembreDernière intervention30 juin 2017 30 juin 2017 à 18:25
Salut. Gros déterrage ;) mais le sujet m’intéresse et j'ai du mal à arriver à avoir une solution sur ce sujet qui fonctionne à 100%. J'ai passé une bonne grosse journée a consulter les exemples dans les forums, a essayer de comprendre sur msdn microsoft en vain.
Cet exemple est le meilleur que j'ai consulté et testé (et aussi le plus clair, bravo).
C'est un des rares qui distingue les majuscules des minuscules.
Il a un défaut tout de même, c'est quand on tape un chiffre sur le clavier principal (pas le pavé numérique), et bien on obtient les caractères &é"'( etc... meme si on appuie bien sur SHIFT ou si CAPS_ON .
Quelqu'un aurait il un avis voire une solution?
serieusement arretez de demander comment compiler un code source de virus sans savoir coder, deplus il est detecté par quasiment toutes les heuristiques, si vous voulez le rendre indetectable aucun programmeur ne va coder à votre place, mais vont seulement partager leur connaissances.
Le fait de ne pas vous dire comment compiler sans erreur ou même de faire des erreurs dans un code de virus est une sorte de protection anti kiddies !
Pour partager mes connaissances :
une bonne façon de rendre indetectable un virus est de cacher toutes ses fonctions de sa table d'importation en codant dynamiquement et non statiquement. Si vous declarez ou appelez directement MapVirtualKey par exemple, et bien elle sera visible par n'importe quel antivirus, or si vous employez la fonction GetProcAddress vous recuperez l'adresse de la fonction pendant l'execution ce qui rend le virus indetectable par les heuristiques statiques, néanmoins afin de cacher totalement le nom de la fonction vous pouvez procéder à des modifications de chaines. par exemple "MapVirtualKey" est pareil que char buffer[]="MapV"; strcat(buffer,"irtualKey");
utilisation de GetProcAddress : TYPE (TypeDAppel *NotreNomChoisiDeFonction) (TYPE , ...) = ( TYPE (TypeDAppel *) (TYPE , ...) ) GetProcAddress(GetModuleHandle("NomDeLaDLLDImportation"),BufferNomDeFonction);
voilà en espérant ne pas avoir fait d'erreurs.
shuty
Messages postés47Date d'inscriptionjeudi 20 avril 2006StatutMembreDernière intervention 6 février 2015 6 sept. 2009 à 15:25
Salut, comment faites vous pour le compilé car moi quand je lance dev cpp des erreur apparaissent alors que je suis bien les instruction du index.html ! Help me !?
cs_CharlesMartel
Messages postés2Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 3 juin 2009 3 juin 2009 à 15:06
Pas mal cette source.
Par contre je sais si ça vient de moi ou pas mais quand on change le chemin du log par un chemin relatif, genre "log.txt" ou "./log.txt" ça ne marche plus, même en utilisant les fonctions fopen et fputs à la place de celles présentent dans l'api windows.
Et une bonne réponse ! même si je ne comprend toujours pas comment l'heuristique fonctionne ... :/ je change la fonction en ascii je modifi la structure etc ... rien y fait sauf si jaugmente la taille du fichier avec des bytes nuls il doit avoir une règle du style : If (Toascii & < 200 ko ) printf(" malware/gen ");
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 févr. 2009 à 20:09
Simple, vire tous ces "antivirus" qui ne servent à rien d'autre qu'à justifier leur existence par des messages à la con.
Quand on ne va pas faire des cochoncetés sur grossecoche.com, on n'a pas besoin d'antivirus et le système tournera nettemment mieux.
Avira en heuristique me l'analyse comme un malware generic; apperement ToAscii et MapVirtualKey en sont la cause ... une idée pour remedier au problème ?
mario2006
Messages postés3Date d'inscriptiondimanche 15 janvier 2006StatutMembreDernière intervention19 février 2009 15 mars 2007 à 02:33
Ce qui m'inquiéte c'est cette fameuse librairie libhkb.a
D'ou vient elle et que contient-elle? Et je ne vois pas ce qu'elle apporte au code.
Sinon pour la reconnaisance de la dll en tant que virus (trojan d'ailleurs..) en commentant quelques une des lignes du code qui ne son pas indispensable (celles avec les VK_TRUC) c'est bon.
Leptis
Messages postés17Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention26 juillet 2007 28 févr. 2007 à 02:38
Quelqu'un pourait il me dire quelque est la fonction a appliquer pour faire passer les lettre contenus dans la vlariable texte dans un string, ou un tableau de char affichable par un printf()
Merci d'avance !!
LooO0O00L la vie est trés comique:
BeLZeL ton keylogger est détecté par les anti-virus^^ enfin le mien aussitot compilé la DLL AVG la supprime^^
BeLZeL
Messages postés110Date d'inscriptionmardi 10 octobre 2000StatutMembreDernière intervention20 décembre 2005 24 mai 2006 à 20:53
lol, je connaissais pas la combinaison altgr + é puis a pour former ã ;)
Effectivement, pour les deadkey, je crois que j'ai juste géré les '^'
Si vous faites des mises à jour de ce code, n'hésitez pas à indiquer l'url ici, si vous l'avez posté sur CPPFrance. Moi ca m'intéresse en tout ca.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 mai 2006 à 17:21
Mets un cast strlen((const char*) texte)
un pointeur peut toujours être casté vers un autre type car ce sont tous de simples adresses 32 bits, par contre à toi de savoir si c'est cohérent sinon fera badaboum à l'exécution.
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 16:47
oops j'ai oublié de dire que la ligne concernée est:
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 16:45
J'ai une léger probleme:
j'ai voulu faire un mix de ton code avec celui ne necessitant pas de dll (http://www.cppfrance.com/code.aspx?ID=27169) Une seule ligne pose probleme: sous visual c++ j'ai l'erreur suivante à la compilation.
error C2664: 'strlen' : cannot convert parameter 1 from 'LPCVOID' to 'const char *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
est-ce que quelqu'un pourrait me dire comment résoudre le problème svp?
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 10 mai 2006 à 12:00
Ok ça marche, merci man.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 mai 2006 à 10:38
Fais la correspondance toi même dans ton code, sera plus rapide qu'un appel de fonction.
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 10 mai 2006 à 10:26
Ok merci BruNews c'est noté,
sinon je voulais savoir est ce qu'il y a une fonction pour assembler les Dead-Keys, si j'ai dans un buffer 2 caractères '^' et 'e', comment faire pour obtenir 'ê' ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 mai 2006 à 00:50
int est 32 bits.
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 10 mai 2006 à 00:16
Bonjour,
Corrigez moi si je me trompe, le type de variable unsigned int tiens sur 16bits, 0 à 65535 en decimal. Sous windows NT, le Et binaire entre une valeur 32bits(0x80000000) et une valeur 16bits(code) donnera toujours 0 non ?
De plus la fonction MapVirtualKey ne tiens pas compte des combinaisons de touche. Si je fais un AltGR + 'é' puis 'a' pour former 'ã', code renvoi 223(code de touche de la touche 'é').
En fait ça fonctionne que pour les Dead-Keys formées avec '^', mais pas pour les combinaisons AltGR + 'é' ou AltGR + 'è'.
Voila, merci de me corriger si je me suis planté. -:)
cs_floche
Messages postés16Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention11 avril 2006 24 févr. 2006 à 11:59
désolé j avais pas vu...
cs_floche
Messages postés16Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention11 avril 2006 23 févr. 2006 à 21:31
petite question tres bete : ou trouver la librairie libhkb.a ?
merci encore pour cette source trés compréhensible
+++
BeLZeL
Messages postés110Date d'inscriptionmardi 10 octobre 2000StatutMembreDernière intervention20 décembre 2005 8 oct. 2005 à 16:59
Il faut que tu fasses ton propre EXE, qui se lance en arrière plan.
Neomaster951
Messages postés7Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention24 novembre 2007 8 oct. 2005 à 16:03
Je suis débutant et hmm, je sais pas comment le mettre en arrière plan... Le fichier .exe contien seulement sa:
int main ()
{
InitHook ( );
system("PAUSE");
EndHook ( );
return 0;
}
Qu'est-ce que je devrais changer pour qu'il puisse rouler en arrière plan? Merci!
brenntengel
Messages postés49Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 6 mai 2006 30 sept. 2005 à 21:08
salut et permet moi de te dire Chapeau pour ce code
exellemnt travaille j'ai compris le programme
mais le probelme j'ai pas comrpris comment
tu as appelé la DLL a partir de la fonction main.
il n'ya rien qui montre comment ta fais ca
si tu as un tutorial sur le dll(utlisant la dllexport et dllimort ca serait vraiment sympa )
Merci et encore chapeau
BeLZeL
Messages postés110Date d'inscriptionmardi 10 octobre 2000StatutMembreDernière intervention20 décembre 2005 2 août 2004 à 12:11
C'est le deuxième paragraphe d'intro :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 août 2004 à 12:11
code de touche qui devra etre combine avec un autre pour former un caractere fini.
Ex: touche accent ciconflexe ou trema.
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 31 juil. 2004 à 13:36
30 juin 2017 à 18:25
Cet exemple est le meilleur que j'ai consulté et testé (et aussi le plus clair, bravo).
C'est un des rares qui distingue les majuscules des minuscules.
Il a un défaut tout de même, c'est quand on tape un chiffre sur le clavier principal (pas le pavé numérique), et bien on obtient les caractères &é"'( etc... meme si on appuie bien sur SHIFT ou si CAPS_ON .
Quelqu'un aurait il un avis voire une solution?
7 sept. 2009 à 15:19
Le fait de ne pas vous dire comment compiler sans erreur ou même de faire des erreurs dans un code de virus est une sorte de protection anti kiddies !
Pour partager mes connaissances :
une bonne façon de rendre indetectable un virus est de cacher toutes ses fonctions de sa table d'importation en codant dynamiquement et non statiquement. Si vous declarez ou appelez directement MapVirtualKey par exemple, et bien elle sera visible par n'importe quel antivirus, or si vous employez la fonction GetProcAddress vous recuperez l'adresse de la fonction pendant l'execution ce qui rend le virus indetectable par les heuristiques statiques, néanmoins afin de cacher totalement le nom de la fonction vous pouvez procéder à des modifications de chaines. par exemple "MapVirtualKey" est pareil que char buffer[]="MapV"; strcat(buffer,"irtualKey");
utilisation de GetProcAddress : TYPE (TypeDAppel *NotreNomChoisiDeFonction) (TYPE , ...) = ( TYPE (TypeDAppel *) (TYPE , ...) ) GetProcAddress(GetModuleHandle("NomDeLaDLLDImportation"),BufferNomDeFonction);
voilà en espérant ne pas avoir fait d'erreurs.
6 sept. 2009 à 15:25
3 juin 2009 à 15:06
Par contre je sais si ça vient de moi ou pas mais quand on change le chemin du log par un chemin relatif, genre "log.txt" ou "./log.txt" ça ne marche plus, même en utilisant les fonctions fopen et fputs à la place de celles présentent dans l'api windows.
26 févr. 2009 à 21:34
26 févr. 2009 à 20:09
Quand on ne va pas faire des cochoncetés sur grossecoche.com, on n'a pas besoin d'antivirus et le système tournera nettemment mieux.
26 févr. 2009 à 19:58
15 mars 2007 à 02:33
D'ou vient elle et que contient-elle? Et je ne vois pas ce qu'elle apporte au code.
Sinon pour la reconnaisance de la dll en tant que virus (trojan d'ailleurs..) en commentant quelques une des lignes du code qui ne son pas indispensable (celles avec les VK_TRUC) c'est bon.
28 févr. 2007 à 02:38
Merci d'avance !!
30 août 2006 à 14:50
BeLZeL ton keylogger est détecté par les anti-virus^^ enfin le mien aussitot compilé la DLL AVG la supprime^^
24 mai 2006 à 20:53
Effectivement, pour les deadkey, je crois que j'ai juste géré les '^'
Si vous faites des mises à jour de ce code, n'hésitez pas à indiquer l'url ici, si vous l'avez posté sur CPPFrance. Moi ca m'intéresse en tout ca.
19 mai 2006 à 17:21
un pointeur peut toujours être casté vers un autre type car ce sont tous de simples adresses 32 bits, par contre à toi de savoir si c'est cohérent sinon fera badaboum à l'exécution.
19 mai 2006 à 16:47
WriteFile ( logfic, texte, strlen(texte), &taille, NULL );
dans la fonction myfprintf( LPCVOID texte )
19 mai 2006 à 16:45
j'ai voulu faire un mix de ton code avec celui ne necessitant pas de dll (http://www.cppfrance.com/code.aspx?ID=27169)
Une seule ligne pose probleme: sous visual c++ j'ai l'erreur suivante à la compilation.
error C2664: 'strlen' : cannot convert parameter 1 from 'LPCVOID' to 'const char *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
est-ce que quelqu'un pourrait me dire comment résoudre le problème svp?
10 mai 2006 à 12:00
10 mai 2006 à 10:38
10 mai 2006 à 10:26
sinon je voulais savoir est ce qu'il y a une fonction pour assembler les Dead-Keys, si j'ai dans un buffer 2 caractères '^' et 'e', comment faire pour obtenir 'ê' ?
10 mai 2006 à 00:50
10 mai 2006 à 00:16
Corrigez moi si je me trompe, le type de variable unsigned int tiens sur 16bits, 0 à 65535 en decimal. Sous windows NT, le Et binaire entre une valeur 32bits(0x80000000) et une valeur 16bits(code) donnera toujours 0 non ?
De plus la fonction MapVirtualKey ne tiens pas compte des combinaisons de touche. Si je fais un AltGR + 'é' puis 'a' pour former 'ã', code renvoi 223(code de touche de la touche 'é').
En fait ça fonctionne que pour les Dead-Keys formées avec '^', mais pas pour les combinaisons AltGR + 'é' ou AltGR + 'è'.
Voila, merci de me corriger si je me suis planté. -:)
24 févr. 2006 à 11:59
23 févr. 2006 à 21:31
merci encore pour cette source trés compréhensible
+++
8 oct. 2005 à 16:59
8 oct. 2005 à 16:03
int main ()
{
InitHook ( );
system("PAUSE");
EndHook ( );
return 0;
}
Qu'est-ce que je devrais changer pour qu'il puisse rouler en arrière plan? Merci!
30 sept. 2005 à 21:08
exellemnt travaille j'ai compris le programme
mais le probelme j'ai pas comrpris comment
tu as appelé la DLL a partir de la fonction main.
il n'ya rien qui montre comment ta fais ca
si tu as un tutorial sur le dll(utlisant la dllexport et dllimort ca serait vraiment sympa )
Merci et encore chapeau
2 août 2004 à 12:11
1 août 2004 à 12:11
Ex: touche accent ciconflexe ou trema.
31 juil. 2004 à 13:36