begin process at 2010 02 10 08:35:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > API HOOKING

API HOOKING


 Information sur la source

Note :
9,2 / 10 - par 5 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :07/04/2005 Date de mise à jour :25/10/2005 15:08:21 Vu / téléchargé :6 901 / 1 008

Auteur : Arnotic

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Se trouve aussi ici: http://www.dev.winsysdev.com/

Voici un code qui permet d'hooker des APIs dans des programmes en particulier.

Exemple ici sur le Notepad, la fonction MessageBoxW est remplacée par la mienne.

Utilisation :
Executer Lanceur.exe
Executer Notepad
Ecrire un texte dans Notepad et faire fichier->fermer (cela génère une messagebox)



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   DLLInjected
    •   Release
      • DLLInjected.dllTélécharger ce fichier [Réservé aux membres club]25 088 octets
    • DLLInjected.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 989 octets
    • DLLInjected.defTélécharger ce fichier [Réservé aux membres club]49 octets
    • DLLInjected.ncbTélécharger ce fichier [Réservé aux membres club]27 648 octets
    • DLLInjected.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier911 octets
    • DLLInjected.suoTélécharger ce fichier [Réservé aux membres club]8 704 octets
    • DLLInjected.vcprojTélécharger ce fichier [Réservé aux membres club]3 988 octets
  •   Lanceur
    •   Release
      • Lanceur.exeTélécharger ce fichier [Réservé aux membres club]23 552 octets
    • DLLInjected.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier211 octets
    • DLLInjected.libTélécharger ce fichier [Réservé aux membres club]1 790 octets
    • Lanceur.apsTélécharger ce fichier [Réservé aux membres club]33 224 octets
    • Lanceur.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier561 octets
    • Lanceur.ncbTélécharger ce fichier [Réservé aux membres club]35 840 octets
    • Lanceur.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 500 octets
    • Lanceur.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier903 octets
    • Lanceur.suoTélécharger ce fichier [Réservé aux membres club]8 704 octets
    • Lanceur.vcprojTélécharger ce fichier [Réservé aux membres club]3 954 octets
    • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier495 octets
  • DLLInjected.dllTélécharger ce fichier [Réservé aux membres club]25 088 octets
  • hook.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier24 197 octets
  • Lanceur.exeTélécharger ce fichier [Réservé aux membres club]23 552 octets

Télécharger le zip


 Historique

25 octobre 2005 15:08:22 :
Se trouve aussi ici: http://www.dev.winsysdev.com/

 Sources du même auteur

Source avec Zip Source avec une capture ARCOLOR (WIN64)
Source avec Zip REMPLACE CRT (WIN64)
Source avec Zip Source avec une capture CREATION DE FICHIER PDF
Source avec Zip SURVEILLER LA MÉMOIRE D'UN PROCESSUS
Source avec Zip TOOL - MOVE CHAINE

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS par racpp
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI... par racpp
Source avec Zip Source avec une capture BROUILLAGE DES FICHIERS JAVASCRIPT ET CSS(WIN32) par gagah1
Source avec Zip Source avec une capture CHANGE CURSEUR par ganjarasta

Commentaires et avis

Commentaire de Oeil_de_taupe le 07/04/2005 18:00:27

Pas mal,

mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...

Commentaire de ymca2003 le 07/04/2005 18:38:23

Dans le bouquin de richter il ya un exemple similaire qui utilise une autre technique (modification de la table d'import):
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip

En ce qui concerne ta technique elle est assez risquée car la modification des premiers octets en jmp ne se fait pas en 1 instruction ASM mais en plusieurs => le thread qui fait ça peut être interrompu au milieu et un autre thread peut faire un appel à la fct hookée et boom.

Sinon en utilisant WriteProcessmemory, il n'y a pas besoin de modifier les protections des pages.

Commentaire de DeAtHCrAsH le 07/04/2005 19:41:13

LoOl le screen, t'aurais quand meme pu nous faire un jolie cercle (:
Sinon le code est vraiment pas mal.

Commentaire de TeLeTUbIz le 08/04/2005 15:39:18

J'ha-lu-ci-ne !!!!!
Je savais pas du tout qu'on pouvait hooker des applications. Je considérais le hook comme un truc permettant seulement la capture d'évenements (clavier, souris, etc...).

Bravo, bien joué !

A part ça, c'est un peu du piratage ca ! :-)
Ta fonction peut ne connaitre aucune limite dans le code ?

Commentaire de patatalo le 09/04/2005 13:49:20 administrateur CS

salut,

les programmeurs assembleur se sont pas mal interessés aux api hook et autres méthodes de reverse code, il y a d'autres techniques d'API Hook expliquées sur le site de Elicz. ( recherche google )

si le sujet t'interresse, j'ai déposé une source du nom de tracelog ( sur www.asmfr.com )

il permet le log des api en temps réel par traçage de l'application a l'aide des exceptions.

il y a aussi un exemple de hook de la fonction SendMessage afin de logger ses paramètres.

@++

Commentaire de TeLeTUbIz le 09/04/2005 15:41:46

Mais alors ca c'est formidable; vraiment formidable.
Ca ouvre un immense champ de possibilités...


Sinon y'avait un rapport avec le reverse code ?

Commentaire de patatalo le 09/04/2005 16:08:56 administrateur CS

le reverse engineering concerne plutot la transformation de l'exe en code assembleur.

par contre, le but final pour l'API hook et le reverse code est quand meme de comprendre le fonctionnement du programme.

Commentaire de cosmobob le 11/04/2005 15:23:37

salut,
perso en ayant recompilé ce code, ca detourne bien le MessageBoxW du notepad, mais celui plante en fermant, alors que pas de pb avec l'exe qui etait direct dans la source.
il faut compiler avec certaines options??

Commentaire de Dihangel le 12/04/2005 18:02:33

<quote>
Pas mal,
mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...
</quote>
J'avais ce même probléme quand je m'amusais avec les hooks, je crois que ca vient du fait que l'adresse hooker en mémoire n'est pas correctement remplacé quand tu decharge la dll. Donc le programme ne trouve plus l'adresse de la fonction, donc ca plante...

Un article qui mérite d'être cité, tout y est expliqué avec même du code a l'appui:
http://www.codeproject.com/system/hooksys.asp

Commentaire de LordBob le 12/04/2005 18:33:11

dite j'ai une question j'ai regarder le code de la dll, je constaste que on inclut le header winsock ?
ce header est-il vraiment nécessaire et si oui pourquoi?

Commentaire de cosmobob le 13/04/2005 09:48:49

ha ben j'ai trouvé pour mon problème, il faut pas oublier de dire que MyMessageBoxW est __stdcall (ca y est partout sauf a cet endroit ...)

a+

Commentaire de cosmobob le 13/04/2005 10:40:46

LordBob> j'ai regardé, on peut effectivement enlever le header winsock, ca compile et  ca tourne sans problemes... il doit s'agir d'un résidu d'un autre projet
a+

Commentaire de mirlaine le 14/04/2005 19:31:55

salut ymca2003 a raison:

1 lister toute les thread du process avec ntquerysysteminformation
2 metre toute les thread en suspen
3 injecter le code
4 puis tout resume

a+

Commentaire de Msgbox le 31/05/2005 22:06:38

Ta source est vachement interessante, bien trouve le coup du JMP, n'empeche j'aurais qqs questions la dessus :S

A quoi servent les fonctions SetWindowsHookEx, CallNextHook ?
J'ai remarque qu'en les enlevant (et en enlevant le if(!...) du Lanceur, le programme ne fonctionne plus, la meme chose quand on quitte le programme (ca crash).
Bon pour le le crash j'ai compri en debuggant, c'est assez logique vu que le notepad fait des "pop" alors que la pile est vide ou un truc du genre, mais comment ces deux fonctions font pour empecher ce bug ????? C'est de la magie haut nivo ? lol

Personellement j'ai essaye de faire sans, c'est a dire un WriteProcessMemory qui insere un JMP vers une DLL chargee sur le notepad. Ca marche mais, juste apres le detournement de l'API, ca crash (pile en vrac).

QQun pourrait m'eclairer la-dessus ?

++

Commentaire de Arnotic le 31/05/2005 22:32:01 administrateur CS

SetWindowsHookEx sert à s'injecter dans les process mémoire des programmes que Windows a.

Commentaire de Msgbox le 02/06/2005 20:35:59

Ah oui c'est vrai !
Vachement astucieux de se passer de CreateRemoteThread :-D. 10/10
Dommage qu'on peut pas exploiter cette methode sans dll.

++

Commentaire de thunderx le 12/05/2006 11:26:15

Et la lib incluse , elle contient quoi ?

Commentaire de Arnotic le 12/05/2006 11:27:35 administrateur CS

C'est tout simplement celle de ma DLL.

Commentaire de thunderx le 12/05/2006 14:49:05

Merci.
En tout cas je viens de faire pas mal de test, je n'ai pas eu de plantage.

Demarche tres interessante en tout cas.

Commentaire de hzocm le 28/05/2007 14:40:57

salut,

Super ton code, merci bc.

Sinon, sais tu pourquoi si je compile le programme en mode DEBUG, Notepad crash lorsque la boite de dialog affiche?

Est_ce qu'on peut utiliser le meme code pour remplacer la méthode LoadResource, FindResource? Sinon, il y a quoi à modifier? Peux tu commenter un peu ton code s'il te plait?

Merci beaucoup

HeoU

Merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales