Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Remplacer des octets dans un fichier [ Divers / Débutants ] (nandofive)

dimanche 1 avril 2007 à 15:01:34 | Remplacer des octets dans un fichier

nandofive

Bonjour à tous

Je souhaite faire un programme qui modifie 2 octets dans deux fichier différents et pour cela j'ai utilisé le code suivant :

    Friend Class Form1
    Inherits System.Windows.Forms.Form
    Dim Offset_A, i, Offset_B As Integer
    Dim Octet As New VB6.FixedLengthString(1)
    Dim Fichier As String
    Dim KeyAscii As Short
    Dim a, b As Integer

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("Fichier1")
        ComboBox1.Items.Add("Fichier2")
    End Sub

    Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
        Select Case (ComboBox1.Text)
            Case Is = "Fichier1"
                Fichier = "C:\Documents and Settings\Nandofive\Bureau\Fichier1.exe"
                FileOpen(1, Fichier, OpenMode.Binary)
                TextBox2.Text = ""
                For a = &H37715 To &H37716
                    FileGet(1, Octet.Value, a)
                    TextBox2.Text = TextBox2.Text & VB6.Format(Hex(Asc(Octet.Value)), "00") & " "
                Next a
                FileClose(1)
            Case Is = "Fichier2"
                Fichier = "C:\Documents and Settings\Nandofive\Bureau\Fichier2.exe"
                FileOpen(1, Fichier, OpenMode.Binary)
                TextBox2.Text = ""
                For a = &H37720 To &H37721
                    FileGet(1, Octet.Value, a)
                    TextBox2.Text = TextBox2.Text & VB6.Format(Hex(Asc(Octet.Value)), "00") & " "
                Next a
                FileClose(1)
        End Select
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Que mettre ici
    End Sub
End Class


Le problème c'est que je ne sais pas quoi mettre dans le FilePut pour remplacer ces deux octets par la valeurs hexadecimal "B0B0"

Pour modifier la zone de texte j'aurais mis : FilePut(1, B0B0", &H37715) pour le fichier 1 et FilePut(1, B0B0", &H37715), mais moi je cherche à modifier les valeurs hexadécimales.

Merci de votre aide.


dimanche 1 avril 2007 à 17:01:24 | Re : Remplacer des octets dans un fichier

jack

Administrateur CodeS-SourceS
Salut
Traficoter des EXE, c'est pas net ... sans jeu de mot

Bref : Tu sais lire les octets
Un octet n'est qu'une valeur numérique
Il te suffit de la modifier.
Ensuite, comme tu as fait pour la lire, tu l'écris
Ce sera facile si tu le fais juste après ta lecture.
Il faudra mémoriser chaque Octet dans une variable distincte si tu pouvoir les modifier après coup puis les réécrire dans le fichier.
Donc, la boucle For-Next est superflue, il te suffit de lire le premier Octet, puis le second (mais dans une autre variable)
Pour le deuxième fichier, idem, soit 4 variables au total.
Ensuite seulement, occupe toi de les afficher avec le format de ton choix dans tes, euh ..., ta TextBox
Tu n'as plus qu'à jongler avec les conversions déc-hexa-déc, Char pourquoi pas ...
Pour la réécriture : Tu as les instructions : Lis l'aide à ce sujet et tu sauras tout.

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on

dimanche 1 avril 2007 à 21:30:48 | Re : Remplacer des octets dans un fichier

nandofive

"Traficoter des EXE, c'est pas net ... sans jeu de mot"

Fichier1.exe & Fichier2.exe ce n'est qu'un exemple je souhaite modifier des fichiers de type .afs mais afin d'évité les questions sur le type de fichier j'ai choisi un type connu. Cela aurait pu être .txt.
Est-il possible d'attribuer par défault des valeurs définis à l'offset &H37711 à l'offset &H37715 de mon premier fichier1.txt. Exemple les valeurs "D8 0D EC 49 B8"

1/ Ouvrir le fichier1.txt
2/ Attribuer les valeurs "D8 0D EC 49 B8" de l'offset &H37711 à l'offset &H37715
3/ Enregistrer et fermer

PS: Merci de ton aide.

lundi 2 avril 2007 à 00:11:45 | Re : Remplacer des octets dans un fichier

hvb

Membre Club

Private Sub modifyfile1( ByVal chemin As String )

Dim hbread As New BinaryReader(File.OpenRead(chemin))

Dim F_array( CInt (FileLen(chemin) - 1)) As Byte

hbread.BaseStream.Seek(0, SeekOrigin.Begin)

'defini le pointeur de lecture au debut du fichier

hbread.BaseStream.Read(F_array, 0,

CInt (FileLen(chemin))) 'on lit le fichier octet par octet que l'on stocke dans le tableau, on specifie ensuite à partir de quel index du tableau on va copier les fichiers (0), et le nbre d'octets que l'on veux (l'equivalent donc ici, de la taille du fichier)

hbread.BaseStream.Flush()

'on libere le buffer

hbread.Close()

'D8 0D EC 49 B8

F_array(&H37711) = &HD8&

'on modifie la valeur de l'index du tableau correspondant à l'offset ou l'on veux modifier le fichier

F_array(&H37712) = &HD&

F_array(&H37713) = &HEC&

F_array(&H37714) = &H49&

F_array(&H37715) = &HB8&

Dim hbwrite As New BinaryWriter(File.OpenWrite(chemin)) 'on defini hbwrite comme BinaryWriter, auquel on doit specifier le mode d'ouverture (File.OpenWrite) et le chemin du fichier

hbwrite.BaseStream.Seek(0, SeekOrigin.Begin)

'defini le pointeur d'ecriture au debut du fichier

hbwrite.Write(F_array)

'on ecrit le contenu de teststr dans le fichier ouvert en ecriture, vu que l'on veux ecrire tout le tableau, il n'est pas obligé de specifier l'index de depart et le nbre d'octets

hbwrite.BaseStream.Flush()

'on libere le buffer

hbwrite.Flush()

'on libere le buffer

hbwrite.Close()

End Sub


code pris ici, une petite recherche n'aurait pas été de trop :
http://www.vbfrance.com/codes/ACCES-BINAIRE-FICHIERS-ECRITURE-LECTURE-PETITS-EXEMPLES-SIMPLES_5746.aspx

Hvb aka Batto
bato.ltd at gmail.com

lundi 2 avril 2007 à 17:51:44 | Re : Remplacer des octets dans un fichier

nandofive

Merci hvb. Tu as raison sur la recherche je m'incline je plaide coupable.


lundi 2 avril 2007 à 21:24:32 | Re : Remplacer des octets dans un fichier

hvb

Membre Club
et en forme ça donnerait plutot ça :

PrivateSub modifyfile1(ByVal chemin AsString)

Dim patch(4) AsByte

patch(0) = &HD8

patch(1) = &HD

patch(2) = &HEC

patch(3) = &H49

patch(4) = &HB8

Dim hbwrite AsNew BinaryWriter(File.OpenWrite(chemin)) 'on defini hbwrite comme BinaryWriter, auquel on doit specifier le mode d'ouverture (File.OpenWrite) et le chemin du fichier

hbwrite.BaseStream.Seek(&H37711, SeekOrigin.Begin)

'defini le pointeur d'ecriture a l'offset necessaire du fichier

hbwrite.Write(patch)

'on ecrit le contenu de patch dans le fichier ouvert en ecriture, vu que l'on veux ecrire tout le tableau, il n'est pas obligé de specifier l'index de depart et le nbre d'octets

hbwrite.BaseStream.Flush()

'on libere le buffer

hbwrite.Flush()

'on libere le buffer

hbwrite.Close()

EndSub
beaucoup plus court, sans ouverture de fichier inutile etant donné que tu connait l'offset d'écriture.
c'est donc moi qui m'excuse, je vais mettre à jour mon code.

PS : pense à reponse acceptée, cela "ferme" le topic.

Hvb aka Batto
bato.ltd at gmail.com



Cette discussion est classé dans : fichier, text, system, octet, textbox2


Répondre à ce message

Sujets en rapport avec ce message

impression avec choix de l'imprimante [ par nvb23 ] nvb23  salut c difficile a expliquer mais j'utilise visual studio 2005 et le code qui se trouve ci-dessous devrait imprimer un fichier dont le nom modification d'une note dans un fichier [ par ar1du62 ] Bonjour, <o Comment imprimer un fichier text [ par Ciboulette ] Je voudrais savoir comment imprimer un fichier a partir de VB merci. rechercher et remplacer des chaines de caracteres dans un fichier texte [ par nox ] salut a tousVoila mon probleme:Je veux rechercher dans un fichier text toutes les chaines de caractere comprise entre (comme des tags HTML), ensuite effacerle contenu d'un fichier text [ par jack ] Bonjour,comment puis effacer le contenu d'un fichier text?MerciJack modifier un fichier (octet) [ par Yoshi ] Salutj'aimerai modifier un fichier en hexadécimal, pour mon patchex: modifier un proget aussi supprimer des octets ou en rajouter Comment enregistrer plusieurs "Text"(text1.text, text2.text ,...) dans un seul fichier et pouvoir le réouvrir ? [ par Olisoft ] Je cherche comment je peux enregistrer les données contenues dans plusieurs "Text" (text1.text, text2.text,...) dans 1 seul fichier et comment je pour ??? Taille max d'une TextBox ?????? [ par Daniel ] Bonjour,J'utilise une TextBox pour afficher un fichier text...par la métode :____________________________________________________________If Fichier_a_ liste box [ par Wind ] J'aimerais lier une listbox avec un fichier de données (pas de basse de donnée mais genre fichier .ini ou txt).et en plus je voudrais que quand je cli CRYPTAGE [ par FREDM ] Je crypte actuellement des fichiers en applicant à chaque octet une clef XOR l'octet lu. Mon problème est qu'en C en prenant un bufer de 1024 le crypt


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.