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

Delphi Discussion :

Remplacer une API par son propre code dans un processus (injection de code)


Sujet :

Delphi

  1. #21
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 220
    Points
    25 220
    Par défaut
    Exactement
    j'ai fourni un exemple de code ICI
    Mais l'injection m'intéresse aussi mais sans madCodeHook, je préférerais savoir le vrai code la dessous ... car si bcp connaisse la "surcharge" de via SetWindowLong avec GWL_WNDPROC, pour choper la super fonction de gestion de fenêtre du GDI windows ... cela doit être quelque chose de similaire, ... mais quoi ?
    Vu que c'est super bas niveau, cela doit être assez peu documenté, lol, un virus qui pourrait désinstaller le Hook du l'AntiVirus, ça serait con non ?

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Exactement
    j'ai fourni un exemple de code ICI
    Mais l'injection m'intéresse aussi mais sans madCodeHook, je préférerais savoir le vrai code la dessous ... car si bcp connaisse la "surcharge" de via SetWindowLong avec GWL_WNDPROC, pour choper la super fonction de gestion de fenêtre du GDI windows ... cela doit être quelque chose de similaire, ... mais quoi ?
    Vu que c'est super bas niveau, cela doit être assez peu documenté, lol, un virus qui pourrait désinstaller le Hook du l'AntiVirus, ça serait con non ?
    LoL mais vous devenez franchement malsain
    J'adore positiviment

    Je me suis un peu documenté et j'ai trouvé des choses interessantes


    Mais j'ai deux questions, peut on continuer sur ce forum?
    Car on ne va pas franchement parler de delphi (ou si peux)...

    Ou continuer cette conversation sans poluer?

    Je suis de retour vers 21 heure (sauf si la biere coule a flot Abwarrrr...)
    J'attend vos avis?

    Est-ce qu'on continue cette conversation?

  3. #23
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par darkvadr
    Mais j'ai deux questions, peut on continuer sur ce forum?
    ...
    Ou continuer cette conversation sans poluer?
    C'est no limit tant que les régles du club sont respectées.
    5. Modération
    5.3. Une nécessité, une obligation légale
    Les forums ne sont pas un espace de non droit,...

  4. #24
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    heu ... je comprend pas vous avez bien lu mon code
    y'a pas de madtruc ... les fonction sont operationnelle tels quel

    @+ Phil

  5. #25
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par anapurna
    salut

    heu ... je comprend pas vous avez bien lu mon code
    y'a pas de madtruc ... les fonction sont operationnelle tels quel

    @+ Phil
    +1
    C'est vrai qu'ils sont pas très sympas. Ils pourraient au moins te dire si ça leur convient ou pas... bref, le minimum

    En plus, ta solution fonctionne très bien chez moi (OverwriteProcedure)
    Mais je ne sais pas si c'est applicables dans le cas de figure de ce fil de discussion.

  6. #26
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 220
    Points
    25 220
    Par défaut
    Je n'avais pas vu ton exemple anapurna, mais celui de la 1ère page de ce sujet, où trouve-t-on OverwriteProcedure, je n'ai pas vu le code dans ta page, juste l'appel ...

  7. #27
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    tu trouvera le code ici
    and le zip de testmenu chez moi cela s'appel RedirectCall et undoRedirectCall

    dans l'unit UHackProc

    @+ Phil

  8. #28
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par anapurna
    salut

    tu trouvera le code ici
    and le zip de testmenu chez moi cela s'appel RedirectCall et undoRedirectCall

    dans l'unit UHackProc

    @+ Phil
    Bah j'ai regardé, mais l'exemple est sur une fonction interne de l'appli, du coup si on applique ce code dans une dll qu'on injecte, le soucis majeur est de retrouver l'adresse de la fonction a reecrire/remplacer/surcharger.

    pour le remplacement de la dll je l'ai dans l'os, l'exe doit aller chercher directement dans system32.

  9. #29
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour info, j'ai trouvé un tuto sur le problême qui intéresse ce fil.
    ça a peut être été déjà posté, mais bon, voilà :
    http://perso.orange.fr/bardou/michel/hook/hooks.htm

  10. #30
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par waskol
    Pour info, j'ai trouvé un tuto sur le problême qui intéresse ce fil.
    ça a peut être été déjà posté, mais bon, voilà :
    http://perso.orange.fr/bardou/michel/hook/hooks.htm
    Si j'ai bien saisi ( bah ouais on peut se tromper ) ca permet d'intercepter les messages de l'appli a windows, je pense pas qu'on puisse intercepter l'appel a une api win et renvoyez a l'appli la valeur qu'on a choisi.

  11. #31
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    on peut faire un point sur ta demande ?
    tu as un executable dont tu n'as pas les source
    celui -ci fait appel a une methode ce trouvant dans une dll externe
    et tu veut derouter l'appel de la premiere dll par un appel a une seconde

    est ce bien cela que tu veut faire ?

    si tu n'as pas les source ni de la dll ni de l'exe ca vas pas etre cotons
    effectivement l'exemple overridemethode que je t'ai fourni est ici pour rerouter une methode appeler dans l'espace memmoire de l'exe dans ton cas il faudrait que ton programme charge la dll

    dans ce cas la tu prend le source sur l'injection de dll
    pour t'en convaincre regarde de ce coté la


    @+ Phil

  12. #32
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par anapurna
    salut

    on peut faire un point sur ta demande ?
    tu as un executable dont tu n'as pas les source
    celui -ci fait appel a une methode ce trouvant dans une dll externe
    et tu veut derouter l'appel de la premiere dll par un appel a une seconde

    est ce bien cela que tu veut faire ?
    Tout a fait, la dll externe c'est comdlg32.dll, pour l'injection de code a ce niveau la c'est ok il ya pas mal d'exemples assez clair.
    La ou ca devient ardu c'est une fois le code injecté, il faut que ce code retrouve le point d'entrée de la fonction que je veux derouter et y mette ma propre fonction a sa place.
    J'ai un exemple qui fonctionne en c++, vais deja essayer de l'adapter pour faire ce que je veux, ensuite je tenterai de le traduire en delphi.

  13. #33
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    lorsque tu fait une injection dll en fait tu remplace dans le process memmoire la fonction que tu cherche donc je ne voit pas pourquoi tu recherche le point d'entrer puisque forcement tu la deja trouvé

    le plus dur aurait ete de reintroduire l'ancienne methode mais la du coup je ne vois pas bien l'interet

    @+ Phil

  14. #34
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par anapurna
    salut

    lorsque tu fait une injection dll en fait tu remplace dans le process memmoire la fonction que tu cherche donc je ne voit pas pourquoi tu recherche le point d'entrer puisque forcement tu la deja trouvé

    le plus dur aurait ete de reintroduire l'ancienne methode mais la du coup je ne vois pas bien l'interet

    @+ Phil
    J'ai pas compris ca comme ca, la facon dont je l'ai compris c'est:
    l'injection de dll permet de mettre le code de la dll dans le process en cours et de la faire executer comme si il appartenait a ce process.
    Le hooking d'api lui demande a ce que le code qu'on injecte, retrouve le point d'entree de la fonction, et remplace l'adresse de celle ci par notre propre fonction.
    Mais ca reste flou et il possible que je me sois compliqué la vie
    Je crois d'ailleurs que tout ca depasse un peu mes competences actuelles.

  15. #35
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    tiens j'ai trouvé un liens super interessant
    http://www.codeproject.com/system/inject2it.asp

    @+ Phil

  16. #36
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par anapurna
    salut

    tiens j'ai trouvé un liens super interessant
    http://www.codeproject.com/system/inject2it.asp

    @+ Phil
    Merci
    Clair que le dossier est super complet!

  17. #37
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut

  18. #38
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    J'ai trouvé un exemple delphi qui s'inspirait du dossier cité au dessus, je men suis servi de base pour refaire l'exemple cpp en delphi.
    Je lis bien ma table d'importation, je retrouve bien l'entrée correspondant a la dll mais je bloque sur la fin.
    dans l'exemple cpp il ya cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memcpy(&dwAPI, pThunk, 4);
    ou dwAPI est un DWORD et pThunk un pchar.
    j'ai la meme valeur dans le pchar, la ou je peche c'est que je n'arrive pas a obtenir l'equivalent du memcpy en delphi, j'ai essayé avec un move mais j'obtiens pas le meme resultat...
    Si quelqu'un a une idee.

  19. #39
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 220
    Points
    25 220
    Par défaut
    CopyMemory ? API Windows, ça devrait faire l'affaire non ?

  20. #40
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par ShaiLeTroll
    CopyMemory ? API Windows, ça devrait faire l'affaire non ?
    Effectivement ca marche, merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/12/2010, 14h18
  2. Réponses: 8
    Dernier message: 19/07/2010, 15h50
  3. Réponses: 2
    Dernier message: 21/09/2008, 17h21
  4. Remplacer une colonne par ses numéros correspondants dans une liste
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 27
    Dernier message: 12/06/2008, 15h42
  5. Application d'une matrice OPENGL par son propre code
    Par fanoplusplus64k dans le forum OpenGL
    Réponses: 4
    Dernier message: 03/10/2006, 23h36

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