De laide pour modifier un code !!! [Résolu]

Signaler
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
salut
pouvez vous sil vous plais m'aider a changer ce code pour qu'il accompli le travaille que je lui veux
se sont deux application différente:
le creator.exe:


avec son code :
Private Sub Command1_Click()
d.Filter = "EXE files (*.exe)|*.exe"
d.ShowSave
If d.FileName <> "" Then
DLLFILE = App.Path & "\core.exe"
APPFILE = d.FileName
FileCopy DLLFILE, APPFILE
    PUTINF = "<%text%>" & Text1.Text
    File1$ = APPFILE
    File2$ = DLLFILE
    
    Open File1$ For Output As #1
    Open File2$ For Binary As #2
    Do While Not EOF(2)
        FileData = Input$(2000, #2)
        msg = FileData
        msg2 = msg2 + msg
        Print #1, msg2;
        msg2 = ""
        If Len(msg) > 2000 Then
            msg = ""
        End If
    Loop
    Print #1, PUTINF
    Close #2
    Close #1
    
    Shell APPFILE, vbNormalFocus
    End If
End Sub

et le core.exe :

avec son code :
Private Sub Form_Load()

Open App.Path & "" & App.EXEName & ".exe" For Binary As #1

filesize = LOF(1)
FileData$ = Space$(LOF(1))
Get #1, , FileData$
For i = 1 To filesize
        If Mid(FileData$, i, 8) = "<%text%>" Then
            i = i + 8
            filechunk$ = Space$(10000)
            Get #1, i, filechunk$
            Text1.Text = filechunk$
            Exit Sub
        End If
    Next i
    Close #1
End Sub


le travaille a faire c'est :
quand j'écrit mon pseudo et mon password dans l'application Security et j'appui sur la bouton crée la sécurité il vas modifier l'application core.exe pour qu'il se trouve mon pseudo et mon password dans les deux champs text1 et text2
le code fourni avec les deux image n'est pas pour cette application je compte sur vous pour m'aider a le modifier

pour plus d'information visiter ce sujet

8 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
Un code qui fonctionne, c'est une chose, le comprendre, c'est mieux.

passons sur le fait que ton code ici est:
- trop long
- trop complexe pour ce que ca doit faire
- franchement maladroit
- pas optimise

il reste basique...

et j'ai l'intime conviction que te donner un code qui fonctionne ne t'aideras pas. ce n'est pas la premiere fois que tu demandes de l'aide a ce sujet, et tu ne semble pas decide a avancer.

Prouves moi que je me trompes.
voici le code en exemple plus haut, nettoye et optimise:

Generation de l'Exe:
Private Sub Command1_Click()
    FileCopy "C:\a.exe_", "C:\a.exe"
    Open "C:\a.exe" For Binary Access Write As #1
        Seek #1, LOF(1)
        Put #1, , Text1.Text
        Put #1, , Len(Text1.Text)
        Put #1, , &H11223344 '# Valeur de controle. Permet de tester si notre fichier contient ou non des donnees
    Close #1
    Shell "C:\a.exe"
End Sub


Lecture des donnees:
Private Sub Form_Load()
Dim sFilePath As String
Dim nSize As Long
Dim nCheck As Long
Dim sData As String
    sFilePath = App.Path
    If Right$(sFilePath, 1) <> "" Then
        sFilePath = sFilePath & ""
    End If
    Open sFilePath & App.EXEName & ".exe" For Binary As #1
        '# On s'assure que le fichier contient bien notre valeur test en tout fin de fichier :
        Get #1, LOF(1) - 3, nCheck
        If nCheck = &H11223344 Then
            '# On recupere la taille de la zone de stockage, situee juste avant le Check
            Get #1, LOF(1) - 7, nSize
            If nSize > 0 Then
                ' Il y a des donnees a recuperer
                sData = Space$(nSize)
                '# Elles sont situees encore avant
                Get #1, LOF(1) - 7 - nSize, sData
            End If
            MsgBox nSize
            MsgBox sData
        Else
            MsgBox "Aucune valeur n'a ete injectee.", vbExclamation
        End If
    Close #1
    Unload Me
End Sub


A toi maintenant de l'adapter a tes besoins (text1 et text2)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Apprends à débuguer et à trouver les raisons de tes problèmes :

- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 pour avancer d'une ligne de code
- F5 pour continuer normalement

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
ouaw...

euh... comment dire ?
pour faire simple, le premier exe va coller en fin du second programme une donnée sous la forme d'un texte (issue pour l'exemple de Text1.Text)

ensuite un Long, qui indique la longueur de la donnée

et enfin, en toute fin du fichier, une valeur de controle: &h11223344 (par exemple). Si je ne retrouve pas cette valeur en fin de fichier, inutile de continuer.


L'autre exe fait le contraire...
lire le tout dernier Long (4 Octets):
Get #1, LOF(1) - 3, nCheck
Si on a bien &h11223344, alors, lire le Long situé avant (la taille)

Enfin, lire l'ensemble des données ajoutées en fin de fichier.

MsgBox nSize
MsgBox sData

simples exemples affichant la taille des données et les données proprement dites.

si ca te semble toujours obscur et que tu obtiens toujours des résultats erronés...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
NB. tu me parles d'un Text2...

je n'en fais pas du tout état dans mon code.
tu as la possibilité d'enregistrer UNE SEULE donnée texte.

a toi de t'arranger pour y stocker ce que tu souhaites...
tu peux largement (et simplement) y stocker le contenu de tes deux textboxes


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

je te remercie beaucoup pour ta réponse
j'essayerai a modifier ton code qui me semble un peu compliquer
attend moi je te donnerai ma réponse bientôt
encore merci
enfaite j'ai pas compris a quoi sa sers le sData qui me renvoi une valeur 6 ou 9
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

j'ai eu tout les résultat sauf celle que je veux
une foi la modification s'applique sur le texte1 , une foi sur le 2
une fois le ya le même mot qui se trouve dans les deux champs ensemble
et le pire que j'ai même trouver des écritures bizzard
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

enfin j'ai trouver un code que j'ai pu le modifier a mes besoin

Const DATA_START = "[DATA]"
Const DATA_ARRAY = "[#]"
Dim core_rec() As Byte
Private Sub Command1_Click()
On Error Resume Next
Kill App.Path + "\core.exe"
Open App.Path + "\core.exe" For Binary As #1
core_rec() = LoadResData(101, "CUSTOM")
Put #1, , core_rec
Put #1, , DATA_START + Text1.Text + DATA_ARRAY + Text2.Text
Close #1
Exit Sub
End Sub


Const DATA_START = "[DATA]"
Const DATA_ARRAY = "[#]"
Private Sub Form_Load()
On Error Resume Next
Dim DATA_SPLIT() As String
Dim DATA_PARAMS() As String
Dim GRAB_DATA As String
Open App.Path + "" + App.EXEName + ".exe" For Binary As #1
GRAB_DATA = String(LOF(1), vbNullChar)
Get #1, , GRAB_DATA
Close #1
DATA_SPLIT() = Split(GRAB_DATA, DATA_START)
DATA_PARAMS = Split(DATA_SPLIT(1), DATA_ARRAY)
text1.Text = DATA_PARAMS(0)
text2.Text = DATA_PARAMS(1)
End Sub


merci bcp a toi jack je le savait pas avant et merci bcp aussi a toi aussi Renfield tu a raison il me manque les basiques j'ai commencer a apprendre le vb en modifiant les codes au lieux de commencer par les bases je connais
le pascale et le C c'est se que j'ai appris a l'université mai que du calcul genre faire un programme qui calcul a et b ou une fonction puis les enregistrements mai pas de graphique. mai je me débrouille bien comméme
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
l'avatnage dans ton code, c'est que si l'on entre

Hello[#]World

dans Text1, on perds le contenu de Text2

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp