cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012
-
1 sept. 2007 à 15:28
ad vitam aeternam
Messages postés17Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention10 mars 2008
-
29 déc. 2007 à 16:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 7 déc. 2007 à 17:28
Tu vis toujours ?
Afyn
Navedac
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 6 déc. 2007 à 22:49
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.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 6 déc. 2007 à 19:12
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)
++
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 6 déc. 2007 à 18:57
Oui c'est possible mais on tombe inevitablement sur les limitations de VB en matiere de partage de memoire et de virtual machine.
@+
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 6 déc. 2007 à 14:27
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!
++
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 13 sept. 2007 à 18:48
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).
cs_Valentino
Messages postés81Date d'inscriptionvendredi 19 juillet 2002StatutMembreDernière intervention 3 août 2010 12 sept. 2007 à 16:12
Salut EBArtSoft,
Tu nous aurais pas refait un "rundll32.exe" ? lol
Bravo pour le contournement ;o)
@+
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 8 sept. 2007 à 17:41
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
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 8 sept. 2007 à 13:19
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 8 sept. 2007 à 12:49
Il est trop fort ... (mais pas comme Schwarzy Moustachu... comme Cindy)
Heu ... ben Oui Cindy Trop Fort
Yop
Afyn
NAvedac
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 6 sept. 2007 à 17:26
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
cacalex
Messages postés69Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention 3 avril 2008 5 sept. 2007 à 15:35
Juste wow...
J'vais faire tout plein de tests avec ça :)
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 4 sept. 2007 à 12:47
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
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 4 sept. 2007 à 09:29
Hello,
Juste pour infos, voici ce qui est faisable avec mon langage et un petit moteur en C à base de FARPROC et de GetProcAddress :
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 4 sept. 2007 à 09:23
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 !
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 sept. 2007 à 21:15
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.
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 3 sept. 2007 à 20:43
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)
@+
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 3 sept. 2007 à 19:36
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)
++
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 3 sept. 2007 à 11:47
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
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 2 sept. 2007 à 23:47
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 !
cs_windob
Messages postés225Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention25 août 2008 2 sept. 2007 à 15:44
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 !
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 2 sept. 2007 à 10:48
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 1 sept. 2007 à 20:01
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.
@+
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 1 sept. 2007 à 19:55
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.
@+
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 1 sept. 2007 à 19:42
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
Chatbour
Messages postés71Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention12 juillet 200910 1 sept. 2007 à 18:46
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 !
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 1 sept. 2007 à 18:32
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
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 1 sept. 2007 à 15:28
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...
29 déc. 2007 à 16:59
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!
9 déc. 2007 à 11:49
(enfin presque)
9 déc. 2007 à 00:08
8 déc. 2007 à 22:43
8 déc. 2007 à 22:17
8 déc. 2007 à 13:31
Afyn - Navedac
8 déc. 2007 à 11:53
;)
7 déc. 2007 à 23:01
7 déc. 2007 à 19:41
A essayer avec FBSL, comme il est codé en C et qu'il supporte les Threads :)
@+
Gerome GUILLEMIN
http://www.fbsl.net
7 déc. 2007 à 17:28
Afyn
Navedac
6 déc. 2007 à 22:49
6 déc. 2007 à 19:12
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)
++
6 déc. 2007 à 18:57
@+
6 déc. 2007 à 14:27
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!
++
13 sept. 2007 à 18:48
12 sept. 2007 à 16:12
Tu nous aurais pas refait un "rundll32.exe" ? lol
Bravo pour le contournement ;o)
@+
8 sept. 2007 à 17:41
souvent bien touffues ... (rien à voir avec le crochettage de fonction
mais bon)
Allez ... touffue tout flâmme ... (proverbe grec)
Afyn
Navedac
8 sept. 2007 à 13:19
Et vive les pattes fraiches !
8 sept. 2007 à 12:49
Heu ... ben Oui Cindy Trop Fort
Yop
Afyn
NAvedac
6 sept. 2007 à 17:26
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
5 sept. 2007 à 15:35
J'vais faire tout plein de tests avec ça :)
4 sept. 2007 à 12:47
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
4 sept. 2007 à 09:29
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
:)
4 sept. 2007 à 09:23
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 !
3 sept. 2007 à 21:15
3 sept. 2007 à 20:43
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)
@+
3 sept. 2007 à 19:36
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)
++
3 sept. 2007 à 11:47
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
2 sept. 2007 à 23:47
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 !
2 sept. 2007 à 15:44
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 !
2 sept. 2007 à 10:48
Je vais décortiquer tout ça !
++
Moustachu
1 sept. 2007 à 20:01
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.
@+
1 sept. 2007 à 19:55
@+
1 sept. 2007 à 19:42
Je vais quand même jeter un coup d'oeuil ! Ca a l'air fumant ton coup !
++
Moustachu
1 sept. 2007 à 18:46
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 !
1 sept. 2007 à 18:32
Ben voila... ça fait ça (et bien plus encore) ! :p
1 sept. 2007 à 15:28
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