Ajouter des fonctions a vb6 (etude, assembleur x86, compilation)

Description

[C'est plus une etude qu'une source. Elle permet d'ajouter des fonctions a vb6 d'une maniere plutot inhabituelle]

Tout d'abord lisez la presentation avant d'emettre un avis !

Donc comme je le dis plus haut, cette source est un essai dans
le cadre d'une etude sur la compilation avec C2/Link qui a montré
plusieurs phenomenes etonnants... je ne vais pas vous exposer ici
toute la these mais je vais prendre un petit exemple simple que vous
pourrez tester vous meme :

(peut etre connaissez-vous deja tout cela, mais pensez a ceux qui ne le savent
pas encore...)

- Ouvrez un nouveau projet vb, ajoutez un module tapez le texte suivant :

Option Explicit

Sub Main()
MsgBox AddressOf A
MsgBox AddressOf B
End Sub

Function A(ByVal n As Long) As Long
n = n + 1
End Function

Function B(ByVal v As Long) As Long
v = v + 1
End Function

- executez le dans l'ide
- compilez et executez le !
- puis comparez le resultat !

VB a tout simplement fusionné les deux fonctions en une seule !
logique puisqu'elles font la meme chose... mais plutot inattendue pour
un programmeur qui s'attend a avoir deux procedures distinctes !
cela vient du mode d'optimisation du code (vitesse/taille).
Tout ça pour dire qu'il ne faut presumer de rien

L'idée de la source est donc de créer des fonctions qui ne font
rien dans l'ide, un canvas de fonction en qlq sorte pour allouer
un espace memoire et un type de declaration pour pouvoir, une fois
le projet compilé placer dans cette meme memoire notre propre
code que l'on aura decomposé en sequence.

Le probleme : pour créer cet espace memoire il faut connaitre
quelle va etre le taille du canvas une fois compilé. Pour le
connaitre on va compilé notre projet avec plusieurs hypotheses.
Puis une fois créé on va "dumper" la memoire de ces fonctions
pour les placer au niveau du point d'entrée d'un faux programme
pour observer le code grace au debug de visual studio !

Une fois tout cela fait, il ne nous reste plus qu'a créer des sequences
en assembleur ou en c pour les integrer dans nos canevas et donc créer
des fonctions conpletement nouvelles.

Dans le zip vous trouverez la source des qlq fonctions teste
comme les decalages de bit ou la copie de memoire
vous trouverez egalement l'outil qui sert a placer du code dans
le point d'entrée d'un prog et un exemple d'utilisation des fonctions

Voici un exemple qui transforme un nombre signé en
non signé :

Value = adv_BitOff(Value,31)

Un autre exemple qui remplit un tableau de n byte avec la valeur 1

dim Tbl(32) as byte
adv_MemoryFill varptr(Tbl(0)),1,32

Compte tenu des differents systemes en vente aujourd'hui je ne garantis
pas le bon fonctionnement du programme ni meme des sources

Source / Exemple :


'Dans le zip
(Désolé pour les fautes)

Conclusion :


J'ai bcp hesité a poster cette source car je sais pertinement
que certains ne vont pas "comprendre" les objectifs réels de
de celles-ci mais vont voir en elle rien d'autre qu'un code
douteux et completement inutile...

Alors je ne vous demande pas de comprendre ma façon de coder
mais juste de moderer vos propos et considerer le labeur

Cordialement,

EB

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.