TROMPER GETPROCADDRESS

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012 - 1 sept. 2007 à 15:28
ad vitam aeternam Messages postés 17 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 10 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.

https://codes-sources.commentcamarche.net/source/43943-tromper-getprocaddress

ad vitam aeternam Messages postés 17 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 10 mars 2008
29 déc. 2007 à 16:59
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!
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 déc. 2007 à 11:49
Bon les enfants on est pas sur IRCfr ici ;)

(enfin presque)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 déc. 2007 à 00:08
#define C ('c' - 32)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 déc. 2007 à 22:43
c'est quoi l'alphabet ?
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 déc. 2007 à 22:17
La troisieme lettre de l'alphabet et accessoirement... la troisieme lettre de l'alphabet.
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
8 déc. 2007 à 13:31
C'est quoi le C ?

Afyn - Navedac
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 déc. 2007 à 11:53
J'allais pas le dire !

;)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2007 à 23:01
Directement en C c'est bien aussi.
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
7 déc. 2007 à 19:41
Hi !

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

@+

Gerome GUILLEMIN
http://www.fbsl.net
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
7 déc. 2007 à 17:28
Tu vis toujours ?

Afyn
Navedac
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 81 Date d'inscription vendredi 19 juillet 2002 Statut Membre Derniè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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 sept. 2007 à 13:19
"Mon Toulousaing Préferé" > Cindy Trop Forte, bougre de pingouin ;p

Et vive les pattes fraiches !
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 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és 69 Date d'inscription mardi 9 mars 2004 Statut Membre Derniè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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Derniè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 :

#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

:)
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Derniè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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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és 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Derniè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és 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
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és 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 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és 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
2 sept. 2007 à 10:48
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
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Derniè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és 71 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 12 juillet 2009 10
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Derniè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...

++moustachu
Rejoignez-nous