begin process at 2012 02 16 04:20:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > API HOOK (TRAMPOLINE)

API HOOK (TRAMPOLINE)


 Information sur la source

Note :
9,44 / 10 - par 9 personnes
9,44 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :08/09/2004 Date de mise à jour :09/09/2004 19:38:56 Vu / téléchargé :11 803 / 1 290

Auteur : EBArtSoft

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


 Description

Cliquez pour voir la capture en taille normale
Voici une deuxieme demo sur le crochetage d'API
cette fois ci la technique employée est dite du
"Trampoline" ou du "crochetage à la source"

Les differences entre cette technique et la modification
de la table d'import d'un exe sont les suivantes :

- Si la procedure est appelé avec GetProcAddress
le module peut ne pas figurer dans la table d'import

- plus important le point d'entrée ne sera pas situé
dans une table de vecteur mais directement sur le
code de la fonction

- Aucune analyse de l'executable n'est necessaire

- Permet de crocheter meme si la fonction est appelé
par une dependance de l'executable dll ou ocx

- necessite de connaitre le debut du code machine
de la fonction a crocheter

- il est impossible de rappeler la fonction originel par
son adresse

Dans l'exemple j'ai implementé une sorte de sniffer interne
qui observe les données lues et ecrites par winsock à
partir d'un controle webbrowser

Source

  • 'Voir zip
  • '
  • ' Cette fois je rajoute qlq liens utile pour comprendre la technique :
  • '
  • ' http://www.research.microsoft.com/sn/detours/
  • ' http://www.internals.com/articles/apispy/apispy.htm
  • '
'Voir zip
'
' Cette fois je rajoute qlq liens utile pour comprendre la technique :
'
' http://www.research.microsoft.com/sn/detours/
' http://www.internals.com/articles/apispy/apispy.htm
'

 Conclusion

Le principal atout de cette technique n'est pas vraiment dans l'utilisation dans le processus courant mais plutot dans un autre processus (ce qui necessite quelques modifications)

On peut par exemple envisager un sniffer sans driver ni modem routeur (ce qui est un tres gros avantage par rapport aux solutions que l'on trouve aujourd'hui par ex. avec WinPcap)

Voila tout...

B@nne prog

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 septembre 2004 11:06:09 :
Ajout d'exemples
09 septembre 2004 19:38:56 :
Bug du SP2 Corrigé

 Sources du même auteur

Source avec Zip Source avec une capture COLOR PICKER
Source avec Zip Source avec une capture SAVEPICTURE() AU FORMAT PNG, JPG, TIF ETC...
Source avec Zip Source avec une capture SAUVEGARDER UNE IMAGE EN PNG
Source avec Zip Source avec une capture VB6 ADDIN - FAITES DISPARAITRE LES MSGBOX D'ERREUR IDE
Source avec Zip Source avec une capture MONITEUR CPU

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de EBArtSoft le 08/09/2004 21:55:43 administrateur CS

Ah oui j'oubliais,

Dans la demo j'utilise une typelib, je vous rassure ce n'est pas utile dans la plupart des cas. Seulement dans ce cas precis ou le hook porte sur une API winsock et sur un control webbrowser on travail dans un environement multithread. De ce fait tout appel a la machine virtuelle de vb dans la fonction de crochetage entraine irremediablement un crash de l'application.

C'est pourquoi j'utilise le minimum d'instruction. Si j'aurais utiliser un "Declare Function" ou un "open" la machine virtuelle aurais été appelé. La typelib evite donc cela pensez y si vous utilisé ce code.

@+

Commentaire de Afyn le 08/09/2004 22:15:23

Tu pourrais pas sortir des nouvelles sources à un rythme un peu moins éfréné ?
Qu'on ai le temps de bûcher un peu ...
Ou alors va falloir que je prenne des cours de soutien à domicile.

Yop !

Heu c koi la machine vire-tue-aile ?

Bonne continuation.

Afyn
Navedac

Commentaire de MoiOlivier le 08/09/2004 22:22:32

Hihi : "Voila tout... "

Ben voyons...
Yaka, ysuffideu, takafairsa...

Juste une question...
De quelle planète tu viens ?

Chapeau bas Monsieur (si je ne l'ai déjà dit).
Good lord !

Commentaire de FeelCode le 09/09/2004 00:27:38

Alors la sa merite un grosse critique :

les nom des variables ne sont pas explicte et il y a aucun commentaire et ça sgnif le c ++ dans le vb  je parle de ta maniere de coder je me trompe ?

Sinon le code est bon comme d'hab lol

Chez moi sa plente dans le sub main il manque peut être la dll ?
note j'ai pas encore ré-installer le service pack de vb :)
je verrai plus tard
je verrai pour la note plus tard :)

Commentaire de DeadlyPredator le 09/09/2004 03:55:53

Très interessant mais le seul problème c'est que ne pas pouvoir utiliser les fonctions de la machine virtuelle VB à l'intérieur de la procédure de l'API détournée revient presque à un retour à l'âge du C++ selon moi. Donc je ne crois pas que ce soit pratique. MAIS, est-ce que il y aurait moyen de créer une TLB des fonctions VB (left$, right$, .....) ou si ça serait iréalisable ou une perte de temps? C'est quand même très interessant.

Commentaire de EBArtSoft le 09/09/2004 08:34:34 administrateur CS

( 1 ) Ca veux dire quoi ça snif le c++ ? tient on peut faire du c++ en vb ? si c'est a cause des api c deja expliqué dans le résumé.

( 2 ) Au plantage dans le sub main me faudrais plus d'info. dans sub main ya pas de code soit c'est initcommoncontrol soit c'est Form_Load.

( 3 ) Le nom des var explicite ? pas la peine ya pas plus de 6 var par fonctions et leurs usage est restreint a une valeur de retour ou un pointeur.

( 4 ) pour la VM ce n'est valable que si le code est executé depuis un autre thread j'aurais pu hooker n'importe quelle autre API sans avoir ce probleme
mais la tache aurais été trop simple.

( 5 ) Quand a "l'age du c++" je ne vois toujours pas le rapport (tout les langage utilise des "if" "then" "a=b" des "call") je ne vois pas trop le rapprochement...

Cela dit j'ai bien pris note de vos commentaires j'en tiendrais compte

@+

Commentaire de liquide le 09/09/2004 08:43:52

salut, j'ai un "Can't run IDE" et l'exe plante(La mémoire ne peut pas etre writen), je suis sous WinXP

Commentaire de EBArtSoft le 09/09/2004 11:10:43 administrateur CS

liquide> c'est peut etre a cause du manifest
je viens de l'enlever de la source. le message
"can run.." vient du fait que le prog (exemple 1)
ne tourne qu'en mode compilé.

pour info je viens d'ajouter deux nouveaux exemples
plus "classique"

@+

Commentaire de liquide le 09/09/2004 13:26:04

toujours pareil, sur la meme démo, ca doit venir de chez moi

les autres, ca marche impec.

Commentaire de Appil le 09/09/2004 17:34:59

Salut
J'ai rien pigé ni dans la description de la source ni de la capture :-D   Alors j'ai vérifié le niveau et j'ai trouvé "Débutant" .. Bizard ! :-O
Mais de quoi tu parles l'ami ? :-(

Commentaire de Afyn le 09/09/2004 17:58:50

Re ------>

L'exemple 1 plante chez moi aussi.
L'exemple 2 et 3 ne fonctionne qu'en mode compilé.

Et les explications se sont évaporées ...

Dommage pour les débutants .

Ben EB ?

Si tu veux écrire un livre plux explicite sur le fonctionnement de VB pour les débutants ...
genre 10 Chapitres de 10 pages ...
Je te trouve un éditeur ... promis !

A+
Afyn
Navedac

Commentaire de liquide le 09/09/2004 19:26:59

ne pouvant pas tester, j'ai essayé de comprendre .... bin j'ai encore du travail !!!

faut que tu m'expliques ton principe de sniffer car je ne vois rien apparaitre dans le code sur le controle winsock alors je suis paumé.

@+

Commentaire de EBArtSoft le 09/09/2004 19:31:32 administrateur CS

Pffuuu il m'a fallu un moment avant de comprendre que mon erreur tenait en trois lettres (ou plutot deux lettres et un chiffre) : "SP2"

En effet j'ai batti le projet sur une platform XP SP2 les pc de test eu aussi equipé pas moyen de comprendre.
Le Service Pack 2 modifie de maniere significative toutes les dll et paticulierement celle qui touchent aux socket donc ça plante sur les pc non equipé. Le probleme est donc corrigé.

@+

PS : Pour mes amis les debutants n'ayez crainte passez votre chemin vous y reviendrez plus tard ;)

Commentaire de EBArtSoft le 09/09/2004 19:36:26 administrateur CS

Je n'ais que faire des notes mais merci Appil pour le "1". Tu comprendras de ce fait que je ne ressent pas l'utilité d'expliquer plus que ça la source et son principe, "l'ami".

@+

Commentaire de liquide le 09/09/2004 19:45:14

si a chaque source, fallait passer son chemin, parce que le niveau est plus elevé que nos connaissances, on le passerait tout le temps.

je ne vois pas comment on pourrait de ce fait revenir plus tard.

c'est drolement encourageant ..... petit, restez petits.
dans 10 ans peut etre que ca marchera .. enfin, quand vb6 aura disparu.
Y'a des choses a interpreter dans des programmes que seul un programmeur (lecteur) et meme avec tout ca bonne volonté et ses recherches ne pourra jamais comprendre.
Tous n'ont pas eu la chance de faire ses études dans ce domaine ni meme d'evoluer professionnellement dans celui ci.

Commentaire de liquide le 09/09/2004 20:23:52

ouais ca marche "presque" impec sur l'exe, bravo

pour la dll winsock j'ai vu, mais je ne vois toujours pas pourquoi il y a un activex winsock.

cependant ca a l'air tres instable, il ne renvoi pas toujours l'info, plante souvent(" Ne répond pas ").

Commentaire de FeelCode le 09/09/2004 20:41:55

Mhmm Eb je fait pas alusion aux api voiyon :)
Pis fait pas celui qui comprend pas sa prend  pas :D

Le 1 est vraiment éxagere je trouve pas sympa. par contre sa vaut pas un 10
Pas de comentaire et tendance à igniorer la sympatie pour les débutants car tu l'a peut être oublier  mai on débute tous un jours, mai même moi qui fait du vb depuis un moment je dois dire que sans commentaire n'importe qu'elle code devient ilisible pour celui qui veux juste comprendre et pas forcement le refaire si tu voi ce que je veux dire.

bref on te demande pas d'écrie un livre mai juste d'être un poile plus " relatif "

Commentaire de EBArtSoft le 09/09/2004 21:12:02 administrateur CS

liquide> Oui il reste des trucs a fixer car c'est une demo d'un principe qui n'a rien a voir avec le "sniffing"

Pour le control winsok je t'explique :

le controle webbrowser ne charge pas la dll winsock lors de la creation du controle donc si on hook la dll au chargement de la form le hook va echouer. Pour parer ce manque on place un control winsock qui lui charge la dll au demarrage. On aurais pus aussi utiliser LoadLibrary.

Le chargement se bloque sur certaine page mais ce n'est pas du au Hook mais au controle webbrowser qui n'appel pas l'evenement de fin de download. Si tu verifie les fichier txt crée tu verra que les donné sont bien la.

FeelCode> Je sait bien que cela peut parraitre obscure mais le but de ce genre de code n'est pas vraiment d'enseigner le visual basic au "debutant" mais bien de montrer des techniques qui defient toute les critiques que certain igniorant lance en disant que le vb ne peut pas faire ce que d'autre langage font.

Et puis le therme debutant me fait bien rire car je fait du basic depuis pas mal de temp et je me considere toujours comme un debutant. Quand bien même j'aurais créer ce langage de mes propres mains je serais encore un debutant j'en apprend tout les jours
chaque heure que je passe devant un livre ou devant mon ordinateur ou bien même en penssant a ce que je vais faire demain je progresse. Cela ne ma jamais amené a critiquer ceux qui de par leurs travail ou leurs savoir sont superieur a moi. Bien au contraire toutes paroles ou ecris deleurs part n'est que pure plaisir. Je critique parfois certains membres parce que j'aimerais qu'il comprenne ma façon de voir la programmation ce qui est surement un tord et je l'avoue. Pour compliquer encore plus l'affaire j'ai horreur de rediger des documents cela me demande un effort qui depasse de loin la conception d'appilcation.

Pour conclure ce long monologue sans interet je dirais que la prochaine fois j'y penserais a deux fois avant de poster une source du genre.

Cordialement

Commentaire de liquide le 09/09/2004 21:32:03

pour ma part ce n'est pas une question de commentaire, j'irais bien trouver a me documenter sur msdn, ce qui peut me "déranger" ce sont des phrases  (traduction de ce que je lis, sans intonation, sans visu, en somme une lecture basic) : "si t'es neuneu passe ton chemin"

en dehors chacun fait comme il le sent dans sa source.

pour le winsock, avant de poster mon message, ne trouvant l'astuce, j'ai testé ton programme sans ce controle et ca passait, mais apres tes explications, je comprend mieux.
sans l'activex, les fichiers sont vides et avec ce controle, ils ne le sont plus (passons les détails que seul toi connait et certains autres).
puis pour evaluer les capacités d'un langage que certains dénigrent, faut bien essayer de le conprendre non ?

Commentaire de Afyn le 09/09/2004 21:34:10

Je suis désolé pour ton dernier commentaire ...

Pour ma part, je ne voulais point te blesser.

(Kelke fois je taquine c vrais ...) mais je respecte
énormément tout le travail que tu fournis et que tu livres à la connaissance de tous...

Moi je vote pour EB aux prochaines élections !

Yop !
A+
Afyn
Navedac

Commentaire de MoiOlivier le 09/09/2004 21:35:16

Houlà...
>EB
"la prochaine fois j'y penserais a deux fois avant de poster une source du genre"...
Du côté de chez moi, on appelle ça un "caca nerveux"...

Statistiquement, les mécontents sont plus nombreux à parler que les heureux (surtout si c'est anonyme).
Et les : "j'ai rien compris, donc ça vaut rien", j'imaginais même pas que ça existait encore (ils sont sensés avoir disparu depuis le 18ème siècle)...

Tout ça pour dire :

Réfléchis pas trop quand même.
Au plus tu nous envoies de codes, au plus on veut aller plus loins...

@+

Commentaire de BruNews le 10/09/2004 00:17:04 administrateur CS

Il est tetu mon pote EB mais la realite l'est encore plus que lui.
goto cppfrance ou valium...

Commentaire de DeadlyPredator le 10/09/2004 03:14:21

Pour précisier ce que j'appelle l'âge du c++, c'est que on ne peut utiliser aucune fonction dans les dlls VB (Left, Right, Split, MsgBox, Open, Input, Mid, Instr, DoEvents, ...) donc on doit travailler avec rien. Pas très pratique. Mais que ce passerait-il SI on interceptait la requête avec ta classe, dans un programme puis qu'elle redirige l'appel vers l'API d'une DLL VB qui elle traiteraient les données? Aurait-on plus de libertés?

Commentaire de FeelCode le 10/09/2004 06:15:27

Eb
Je dis pas que le terme debutant est obligatoire je dis que 3 ou 4 ligne de commentaire dans le code ça tue pas le clavier :D
Quand tu va visiter un musée très grand tu aime bien savoir ou tu te trouve :D

Quand aux prouesse de vb c'est une autre polemique mai je dirait une seul chose  il est lent c'est tout sinon le reste on peux tout faire (meme la veselle)  mai sa reste un autres sujet :)

Commentaire de Appil le 10/09/2004 14:02:49

Bonjour Eb,
Je ne me rappelle pas avoir noté ta source ... C'est vrai que j'ai pas bien compris à quoi ça sert ta source .. mais je crois que c'est ma faute pas la tienne.

Bonne programmation

Commentaire de Alain Proviste le 12/11/2004 22:54:42 administrateur CS

Personnellement  j'aimerais assez que tu continues à poster des sources de la sorte.
Les sources un peu plus poussées manquent cruellement sur le site. Le niveau est bien bas je trouve, et c'est toujours un plaisir de tomber sur une participation comme celle-ci.
Ne te formalise pas trop pour quelques remarques negatives :)

Commentaire de liquide le 12/11/2004 23:54:36

Alain !!! tu ne te prendrais pas pour un Caïd de la prog ?

De la programmation, il en faut pour tout le monde ... du plus faible jusqu'au meilleur. Sous pretexte que tu sais programmer, tu renies que tu as été débutant, que tu as eu comme tout le monde besoin d'info basic à tes débuts ?
Quel prétention as tu pour dire que le niveau est bas ? es tu juge proclamé par on ne sait quel organisme ?

le niveau de telle ou telle personne est ce qu'il est, il interesse ou pas, mais de la à dire qu'il est bas, il sera peut etre élevé pour cetains.

c'etait juste une paranthèse sur ma agacement de certains dires sans fondements.

Commentaire de Alain Proviste le 13/11/2004 00:07:46 administrateur CS

Je ne suis pas un bon programmeur, je n'ai pas cette pretention.
Simplement quand je regarde les sources nouvellement postées ou quand je reçois les codes de la semaine qu'est-ce que je vois : des codes extremement basiques, qui correspondent a un tout petit niveau ( personne n'est debutant au point de devoir consulté des sources aussi basiques pendant 1 ans 10 fois d'affilé ) ou pour des fonctionnalités qui ont déjà été présentées plusieurs fois sur le site.
C'est pourquoi ça me fait mal quand je lis eb ralé, parce que lui il fait avancé les choses, il apprend des choses à ceux qui ne sont ni pro ni completement debutant.
En dehors de ça, je veux signaler que j'avais moi même décidé d'arreter de participer à codes-sources, suite au départs de certains de mes amis de cette communauté, et suite à l'attitude de nombreux membres sur le site.
Je concois très bien qu'on puisse etre agacé par des critiques : tu publies une sources, il manque des commentaires, ou alors ceci est pas clair, et dessuite tout le monde rale.
Ca ne donne pas envie de participer.
Je vais participer à la cslib, parce que je trouve que le projet a un réel interet mais je ne publierais pas plus de sources car vbfrance n'a finalement besoin que de sources telles qu'on en publie 15 par jour : des sources pour gros debutant.
Vois en ça un manque envers qui tu veux, je ne le dirais jamais assez, ça m'indiffère.

Commentaire de liquide le 13/11/2004 00:14:45

si ca t'indiffere, pourquoi poster un message !!!!, ne serais tu pas contradictoire ?

Commentaire de Alain Proviste le 13/11/2004 00:18:02 administrateur CS

j'apprécie la qualité de ta réponse, d'une pertinence profondément en rapport avec tes autres commentaires.
c'est tres interessant de t'entendre commenter les détails les plus insignifiants de ce que j'ai pu dire.
Je propose que nous retournions programmer.

Commentaire de liquide le 13/11/2004 00:22:56

Elle n'est que le reflet ... de ta reflection basique et présompteuse.

Commentaire de Alain Proviste le 13/11/2004 00:34:49 administrateur CS

tu as de la repartie c'est certain ( sincerement ) mais je ne comprend pas pourquoi tu t'attaches a relevé tous les points noirs de ce que tu vois ?

Commentaire de EBArtSoft le 13/11/2004 11:29:13 administrateur CS

Bonjour, bonjour,

J'ai vue de la lumiere du sang et de la chique alors je suis entrée ! :p

J'avoue partager l'avis de Alain sur le fait que "depuis quelque temps un amas de code pondu a la façon grosse industrie alimentaire du hamburger viennent s'engorger sur le site comme le colesterol dans mes arteres".

Cela dit peridode scolaire aidant un petit pourcentage des nouveaux bidouilleur d'aujourd'huis serons les grand programmeur de demain. Le cycle de la vie est ainsi fait que les bonnes choses comme les mauvaises reviennent inevitablement par interval de temps.

Malheuresuement pour moi, les grands noms du site que j'admire et qui m'apportais la dose de programmation dont j'ai besoin on disparu aujourd hui... mais c'est surement une question de temps avant que d'autre prennent leurs place d'ici la je vais hiberner dans ma grotte, l'hiver s'annonce rude...

Merci @ tout ceux qui participent au sites codes sources en y mettant tout ce qu'il on dans le ventre (même si parfois le resultat n'est pas a la hauteur de nos esperances)

Commentaire de Afyn le 13/11/2004 14:28:07

Merci à toi aussi !

Si tous les cancres du monde pouvaient se donner la main ...

Afyn
Navedac

Commentaire de laurent207 le 08/03/2005 10:21:37

EBArtSoft pour le prb SP2 avec les socket, pourrais-je savoir comment tu l'a réssolu ?

Commentaire de greg1386 le 10/01/2007 17:46:47

Salut je trouve ta source pas mal du tout mais le problemme c'est les commentaire !!!!  perso j'ai essayer de retaper le code pour l'adapter a mes besoin mais c telment le merdier la dedant que j'arrive rien a en tirer , alors je veux bien qu'on dise que je suis mauvais en VB c'est pas faut mais bon avec des commentaire on peu toujours arriver a quelque chose... et aussi pourquoi le peu de commentaire que tu fait son en anglais ? @+

Commentaire de EBArtSoft le 10/01/2007 22:42:31 administrateur CS

greg1386> Par ce que ! lol

;p

Commentaire de ghuysmans99 le 07/06/2007 23:23:42

pourquoi "le peu de commentaire que tu fait son en anglais" ??
réponse aussi stupide que la question : l'anglais est une langue internationalle !!
comme ça cela pourra être lu même par un chinois.
vala !!

au fait : BRAAAAAAVOOOOO! 10/10

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,154 sec (4)

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