begin process at 2012 02 13 08:28:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > TROMPER GETPROCADDRESS

TROMPER GETPROCADDRESS


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Classé sous :dll, exe, virtuel, crochetage, import Niveau :Débutant Date de création :01/09/2007 Date de mise à jour :03/09/2007 20:34:07 Vu / téléchargé :8 661 / 634

Auteur : EBArtSoft

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


 Description

Cliquez pour voir la capture en taille normale
Bonjour,

Tout d'abord voici les qualités nécessaires afin de bien comprendre cette source :

- Savoir lire le langage vb
- Maîtriser la fonction "Declare"
- Savoir ce qu'est une "DLL"
- Connaitre le format de fichier "EXE" (ou "Portable Executable")
- Savoir ce qu'est un crochetage de fonction
- Avoir envie de lire la suite (cette qualité prend le dessus sur toutes les autres)

Pourquoi cette source :

Très bien alors maintenant que vous êtes avertis, on peut continuer. Cette source a debuté sur une étude du loader de windows XP. En effet la question etait "peut on ajouter dynamiquement des fonctions à un executable et les exporter avec GetProcAddress ?". Apres de longues heures de codage il s'avere que la reponse est "OUI". Donc concretement on demontre le fait qu'il est possible de transformer un EXE en DLL en runtime.

Mais que fait cette source :

Il faut vous imaginer le format de fichier EXE (qui est le même que celui des DLL) donc on va réecrire la memoire de l'EXE de telle sorte que le systeme croit que c'est une DLL (modification de l'entête et de la table d'exportation) et ainsi exporter des fonctions. On peut ainsi transformer l'executable en plugin ou bien encore re-router des fonctions d'une dll vers nos propres fonctions.

Que faut il penser de cette source :

- Si vous ne comprennez pas tout : Ne vous inquietez pas c'est normal car elle est issue de mon esprit tordu.
- Si vous trouvez que cette source est totalement inutile : Vous avez raison alors ne vous attardez pas dessus.
- Si vous vous appelez BruNews, Warning ou Renfield : alors prenez-la comme une dedicace personnelle.
- Si vous avez quand même reussi à lui trouver une utilité : Arretez la boisson ;)


 Conclusion

Rien de plus...

Bonne pr@g

 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

03 septembre 2007 20:34:07 :
Ajout des versions Excel 97 et Excel 2007

 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 CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes
Source avec Zip Source avec une capture UN PATCH EN VB (V3) par PhoenixBytes
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture MULTITHREADING ACTIVEX par Philippe734

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
Source avec Zip AJOUTER OU MODIFIER LA RESSOURCE VERSION DANS UN EXÉCUTABLE ... par ShareVB
Source avec Zip Source avec une capture CLM'S EXTRACTOR : EXTRAIRE LES RESSOURCES (ICO, CUR, BMP, AV... par clementio
Source avec Zip EXEMPLE DE DLL ET EXE par max12
Source avec Zip Source avec une capture VBOCXFINDER par max12

Commentaires et avis

Commentaire de moustachu le 01/09/2007 15:28:23

Salut,
Trop facile, ça fait dix ans que je fais ça déjà... bon ok, réponse 1 pour moi.
Ca ne t'embête pas si je note pas hein...

++moustachu

Commentaire de EBArtSoft le 01/09/2007 18:32:48 administrateur CS

Moustachu> Pour faire simple : imagines que tu puisses declarer une fonction et un module qui n'existe pas genre "Declare MaFonctionQuiExistePas Lib MonModuleQuiExistePas", puis qu'a partir de cette declaration tu puisses appeler n'importe quelle fonction qu'elle soit dans ton code ou dans une dll ou n'importe ou en memoire, ce serait bien non ?

Ben voila... ça fait ça (et bien plus encore) ! :p

Commentaire de Chatbour le 01/09/2007 18:46:58

Salut,

question débutante : est-ce c'est une invention ? une méthode qui existe déjà ?

bon franchement ça l'air malveillant ;)

je plaisante.. bravo !

Commentaire de moustachu le 01/09/2007 19:42:35

Ah oui ce serait bien... mais pourquoi ne pas appeler une fosnction qui existe dans un module qui existe ?? Ok je sors, mauvaise blague ;o)

Je vais quand même jeter un coup d'oeuil ! Ca a l'air fumant ton coup !

++
Moustachu

Commentaire de EBArtSoft le 01/09/2007 19:55:47 administrateur CS

Pourquoi ? ben par ce que ça existe deja et que c'est pas drole. Plus serieusement je ne connais aucune fonction en vb qui permette de transformer un exe en execution en dll. Si tu en trouve une je suis preneur.

@+

Commentaire de EBArtSoft le 01/09/2007 20:01:46 administrateur CS

J'explique : tu es dans ton programme exe puis tu appel mon objet VirtualDLL tu lui dit "tient crée moi une dll qui s'appel moustachu.dll et qui exporte une fonction moustachu1 et moustachu2"

Bien figure toi qu'il le fait et en plus le systeme va croire que ton exe est la dll en question. Apres pour ce qui est des application comme je le dit dans l'intro... j'en vois pas trop. Mais au moins c'est possible.

@+

Commentaire de moustachu le 02/09/2007 10:48:45

Je commence à comprendre...merci pour les éclaircissements. "Il est trop fort" comme dirait Schwarzy dans "Toto Story"(http://www.youtube.com/watch?v=gyN2qB7N-hY).

Je vais décortiquer tout ça !

++
Moustachu

Commentaire de windob le 02/09/2007 15:44:10

En effet ça peut etre tres utile pour contrer un firewall !
Comme en général les regles sont crées pour les applis communes comme IE et/ou Firefox, tu peux acceder a internet sans que le firewall ne pose de question mais ce n'est qu'un exemple.

Appart ça je ne vois pas bien dans quelles conditions pourrait servir ton code mais il est interressant de connaitre cette astuce !

Sinon je trouve ça intéressant de pouvoir faire des choses en général réservées aux langages bas niveau en vb :D !

Commentaire de MadM@tt le 02/09/2007 23:47:29

arf je me suis encore trompé, je suis sur asmfr au lieu de vbfrance non ? :D
vu que j'ai pas trop trop compris (mais grace à tes explications ça me parle un peu plus), je vais me contenter de dire : ben c'est cool, maintenant on peut le faire :D

Mais alors, en gros, on transforme notre exe (en mémoire) en DLL..? Ou alors on crée une DLL en mémoire en plus de notre EXE ? Et la DLL est réutilisable par seulement notre exe, ou n'importe quel autre EXE ?

J'ai parcouru le code et ça m'a aidé à comprendre, effectivement c'est interessant en soit.
(par contre j'ai été pris d'un bon fou rire quand j'ai lu le module VirtualDLLProc.cls :D)

Félicitations en tout cas pour ce travail !

Commentaire de GEDDi le 03/09/2007 11:47:26

Bonjour,

J'ai repris le code sous Excel 2002, juste changé App.hInstance par Application.hInstance, ça se 'compile' bien mais j'ai une erreur 53 (fichier introuvable) quand il tente d'acceder à 'ouais et alors ?', enfin à ce qui semblerait etre une dll virtuelle...

Bref, ça ne fonctionne pas :/
Pourrais-tu donner les prérequis de fichiers physiquement présents pour que ton code fonctionne s'il te plait ?

Merci

Commentaire de PCPT le 03/09/2007 19:36:51 administrateur CS

GEDDi -> VBA non compilable, donc pas "d'exe" à trouver et à transformer virtuellement en DLL.
aucun fichier autre que ceux présents dans le ZIP.

EB -> j'ai tenté avec un appel à un exe externe (en VB, avec une fonction bidon en module standart), sans succès.
"appel introuvable dans le point d'entrée machin" ou qqc du genre

sauf erreur de ma part (possible), même question que MadM@tt ??

beau boulot!
(BruNews va encore t'arracher les yeux :D)
++

Commentaire de EBArtSoft le 03/09/2007 20:43:16 administrateur CS

MadM@tt >

1. On transforme l'EXE en DLL (export de fonction) le systeme le reconnait comme tel avec GetProcAddress.

2. Ne fonctionne que pour le processus courant.

3. VirtualDLLProc.cls une classe c'est bien plus pratique pif paf tu crées une collection et tu te fais pas ch%*!

GEDDi > Voir exemples excel dans le zip.

PCPT >

1. Marche pour VBA avec 2 lignes de code à changer

2. Même reponse (2) que MadM@tt (Serait possible de transformer un exe hors process avec Read/WriteProcessMemory mais pas possible de partager des pointeurs entre les process)

@+

Commentaire de BruNews le 03/09/2007 21:15:59 administrateur CS

Réjouissons nous qu'il y ait un tout fou comme EB sur vbfrance, ça nous change des textbox numériques et autres fadaises du genre.

Commentaire de GEDDi le 04/09/2007 09:23:00

Hello,

Merci EBArtSoft !
En fait je viens de comprendre ton code :)
Et je me rappelais juste que ce que tu viens de faire est une vraie performance sous VB !
Car en C, ce code là est faisable en quelques lignes, c'est d'ailleurs un moteur similaire basé sur des FARPROC / GetProcAddress que j'ai implémenté dans mon langage de programmation (FBSL pour les connaisseurs, un hybride entre VB, PHP, JS)
Cependant merci pour ta perf sous VB/VBA!
Ca mérite simplement un 10/10 !

Commentaire de GEDDi le 04/09/2007 09:29:40

Hello,

Juste pour infos, voici ce qui est faisable avec mon langage et un petit moteur en C à base de FARPROC et de GetProcAddress :

#Option Strict
#AppType Console
Dim %hInstance, %fp, %iRet
hInstance = LoadLibraRY( "user32" )
  fp = GetProcAddress( hInstance, "MessageBoxA" )
  iRet = CallWindowProc( fp, Me, "Hello FBSL!", "Yooooooo!", MB_OK )
  Print "MessageBox code return is == " & iRet
FreeLibrary( hInstance )
Pause

:)

Commentaire de EBArtSoft le 04/09/2007 12:47:38 administrateur CS

GEDDi> Merci pour ton soutient. Dans le cas present ce n'est pas tout a fait ce que tu expliques car il ne sagit pas d'appeler une fonction de dll grace a son pointeur mais plutot de créer l'illusion qu'il existe une dll a l'emplacement de notre exe en mode execution (car a la compilation il est tres simple d'ajouter des fonctions).

En C le resultat est le même (je vais d'ailleur surement poster la source) et c'est bien plus simple à realiser car on a un acces direct a la memoire et on evite le crochetage de dll dans l'ide.

Bonne pr@g

Commentaire de cacalex le 05/09/2007 15:35:00

Juste wow...

J'vais faire tout plein de tests avec ça :)

Commentaire de Warny le 06/09/2007 17:26:35

Salut,
Dans la pratique, ça permettrai pas de faire la même chose que les fonction delegate du .NET ?
Toujours est-il que tes prises de tête me laisse régulièrement sur le c... bravo

Commentaire de Afyn le 08/09/2007 12:49:48

Il est trop fort ... (mais pas comme  Schwarzy Moustachu... comme Cindy)



Heu ... ben Oui Cindy Trop Fort

Yop

Afyn
NAvedac

Commentaire de EBArtSoft le 08/09/2007 13:19:14 administrateur CS

"Mon Toulousaing Préferé" > Cindy Trop Forte, bougre de pingouin ;p

Et vive les pattes fraiches !

Commentaire de Afyn le 08/09/2007 17:41:24

Les pattes fraîches ... mais sans poils ... pas comme les portuguaises... qui au lieux d'être bien foutues ... sont
souvent bien touffues ... (rien à voir avec le crochettage de fonction
mais bon)

Allez ... touffue tout flâmme ... (proverbe grec)

Afyn
Navedac

Commentaire de Valentino le 12/09/2007 16:12:45

Salut EBArtSoft,
Tu nous aurais pas refait un "rundll32.exe" ? lol
Bravo pour le contournement ;o)

@+

Commentaire de EBArtSoft le 13/09/2007 18:48:21 administrateur CS

Valentino > Rien a voir avec rundll32 qui est bcp plus simple a faire puis qu'il sagit de charger la dll et d'appeler la fonction (en 3 lignes de code tu te fais un rundll32).

Commentaire de draluorg le 06/12/2007 14:27:52

Plop

Encore un code de ouf! :)

Est-ce imaginable d'utiliser cette methode avec CreateRemonteThread ? (je crains de connaitre deja la reponse mais avec toi on sait jamais...)

En tout cas chapeau!

++

Commentaire de EBArtSoft le 06/12/2007 18:57:30 administrateur CS

Oui c'est possible mais on tombe inevitablement sur les limitations de VB en matiere de partage de memoire et de virtual machine.

@+

Commentaire de draluorg le 06/12/2007 19:12:50

Eh veux tu dire oui si on ne fait pas appel a la VM dans la fonction appelée ?

Je vais faire quelques test a l'occasion, ce serait bien si on pouvait utiliser quelques api dans un autre process sans devoir faire une dll en C... (bien que j'aurais surement plus vite fait de faire ma dll en C mais bon c'est moins fun)

++

Commentaire de EBArtSoft le 06/12/2007 22:49:39 administrateur CS

Il existe deja sur le net des codes pour faire du safe thread en vb mais c'est clair que le VB 6 n'est pas fait pour ça.

Commentaire de Afyn le 07/12/2007 17:28:36

Tu vis toujours ?

Afyn
Navedac

Commentaire de GEDDi le 07/12/2007 19:41:49

Hi !

A essayer avec FBSL, comme il est codé en C et qu'il supporte les Threads :)

@+

Gerome GUILLEMIN
http://www.fbsl.net

Commentaire de BruNews le 07/12/2007 23:01:50 administrateur CS

Directement en C c'est bien aussi.

Commentaire de EBArtSoft le 08/12/2007 11:53:42 administrateur CS

J'allais pas le dire !

;)

Commentaire de Afyn le 08/12/2007 13:31:55

C'est quoi le C ?

Afyn - Navedac

Commentaire de EBArtSoft le 08/12/2007 22:17:59 administrateur CS

La troisieme lettre de l'alphabet et accessoirement... la troisieme lettre de l'alphabet.

Commentaire de PCPT le 08/12/2007 22:43:11 administrateur CS

c'est quoi l'alphabet ?

Commentaire de BruNews le 09/12/2007 00:08:16 administrateur CS

#define C ('c' - 32)

Commentaire de EBArtSoft le 09/12/2007 11:49:55 administrateur CS

Bon les enfants on est pas sur IRCfr ici ;)

(enfin presque)

Commentaire de ad vitam aeternam le 29/12/2007 16:59:40

Salut!

En fait si je comprends bien on peut faire un programme qui s'auto-réécrit?

Par exemple donc, un programme qui "apprend" en auto changeant un jeu d'instruction?

Moi je trouve celà vraiment intéressant!

Bonne continuation!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

.EXE et VB5FR.DLL [ par hpfx ] Comment faire pour se debarraser de VB5FR.DLLJ'aimerais faire un .EXE qui ne necessite que le runtime : MsVbVm5.DLL (ou qqchose comme ca) mais en tou ActiveX.exe et ActiveX.dll [ par Philtous ] Salut à vous, J'aimerais savoir si c'est possible de me donner un exemple simple (facile à comprendre) d'un ActiveX.exe ou .dll en VB.Merci,Philippe compiler un source en EXE [ par Patrice ] Bonjour à tous,Je sais qu'on peut compiler un source avec Visual Basic mais quand on met ce EXEsur un autre Ordinateur le programme ne peut fonctionne Dépendances EXE, OCX, DLL [ par Amstel ] Existe t-il un logiciel qui permette de connaitre les dépendances d'un EXE, d'un OCX ou d'une DLL ? transformer une feuille en mdichild [ par Corwyn ] J'aimerais afficher une feuille qui fait partie d'une dll activex ou d'un exe activex (a) à partir d'un projet vb exe normal.Mon exe vb est une feuill Mon exe ne s'ouvre pas (pas de DLL) [ par jeg ] Lorsque j'envoie mon exe sur Internet ou sur certains ordi, il ne s'ouvre pas, il manque une DLL.Helpmerci Un seul EXE, comme au bon vieux temps ! [ par rimbaud ] Bonjour à tous, bravo milles fois pour ce site !Une question simple, et récurente sur ce forum : une réponse certainement complexe:je désire programer debuger une dll activeX [ par bidules ] Salut,Comment faire pour debuger une activeX?moi je fais, ds proprité du projet, demarrer un exe.Ds l'exe j'ai mis la reference de la dll compilé.Ensu Dll.. Dans un Exe ??! [ par Fry ] Yo les MEcs... je voudrait si cela peut mettre des Dll . dans un Exe.. et si cela se peut .. de me dire comment :)


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,186 sec (4)

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