Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13

    [VB.NET] Lavorare con file data binary

    Salve a tutti. Sto cercando di modificare un file data binary (o almeno è ciò che penso sia), questo qui per la precisione: http://www.mediafire.com/?da0ad07pzfogdl0 (uso notepadd++ per aprirlo)

    Ciò che vorrei fare è modificare le parti testuali all'interno, per esempio: http://img403.imageshack.us/img403/8017/94022290.jpg
    Vorrei modificare "CustAssetSeen-803981731[NUL][STX][NUL][NUL][NUL]1" in "CustAssetSeen-803981731[NUL][STX][NUL][NUL][NUL]0"

    Utilizzando i FileStream sono riuscito sia a farlo leggere che a scrivere dal mio programma, ma ho ancora un problema. Questo file che sto cercando di modificare è un file di configurazione di un'altra applicazione. Il mio programma riesce a leggerlo senza problemi sia prima che dopo che applico le modifiche, purtroppo l'applicazione "originale" che ha creato il file non lo riconosce dopo che applico le modifiche e lo sovrascrive con un nuovo file.

    In poche parole, il programma legge e scrive il file, ma non in modo tale da fallo riconoscere dall'applicazione originale.

    Comunque posto qui il codice che uso per leggere e scrive il file (NOTA: è molto "rozzo", poco ottimizzato insomma)
    codice:
    Dim nul As Char = ChrW(0)
        Dim stx As Char = ChrW(2)
        Dim ht As Char = ChrW(9)
        Dim lf As Char = ChrW(10)
        Dim vt As Char = ChrW(11)
        Dim ff As Char = ChrW(12)
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim fileStream As New IO.FileStream("C:\test", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
            Dim myFileReader As New System.IO.StreamReader(fileStream)
            Dim text As String = myFileReader.ReadToEnd
            myFileReader.Close()
            fileStream.Close()
     
            If text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "1") = True Then
                Me.ComboBox1.SelectedIndex = 0
            ElseIf text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0") = True Then
                Me.ComboBox1.SelectedIndex = 1
            End If
        End Sub
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim fileStream1 As New IO.FileStream("C:\test", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
            Dim myFileReader As New System.IO.StreamReader(fileStream1)
            Dim text As String = myFileReader.ReadToEnd
            myFileReader.Close()
            fileStream1.Close()
     
            If Me.ComboBox1.SelectedIndex = 0 Then
                If text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0") = True Then
                    text = text.Replace("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0", "CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "1")
                    MsgBox("Done") 
                End If
            End If
            Dim fileStream2 As New IO.FileStream("C:\test", IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None)
            Dim myFileWriter As New System.IO.StreamWriter(fileStream2)
            myFileWriter.Write(text)
            myFileWriter.Close()
            fileStream2.Close()
            MsgBox("Done")
        End Sub
    Qualche suggerimento?

    Grazie per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Molto probabilmente l'applicazione originale esegue un checksum del file in questione per assicurarsi che sia valido/originale.

    Dato che stai modificando un file che, comunque, appartiene ad una applicazione che non è tua, anche per questioni di diritti d'autore, ti suggerirei di rivolgerti al produttore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    È un file di configurazione (per la precisione di un gioco) quindi non credo sia illegale. Tra l'altro mi pare che esistano già dei programmi editor che dovrebbero modificare il file senza però avere problemi.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Dendari
    È un file di configurazione (per la precisione di un gioco) quindi non credo sia illegale.
    Questo non lo puoi decidere tu o io. Lo decide il produttore se modificare quel suo file è lecito o no (c'è una licenza d'uso anche per i giochi).

    E dato che qualcosa non va, è possibile che il produttore non voglia questo tipo di interventi.

    Tra l'altro mi pare che esistano già dei programmi editor che dovrebbero modificare il file senza però avere problemi.
    Infatti ... gli editor binari esistono e se devi solamente modificare qualcosa ogni tanto, non conviene scrivere il codice ma usare questi editor.

    Ciò non vuol dire che non avrai problemi e non vuol dire che la cosa sia lecita.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    Originariamente inviato da oregon
    Questo non lo puoi decidere tu o io. Lo decide il produttore se modificare quel suo file è lecito o no (c'è una licenza d'uso anche per i giochi).

    E dato che qualcosa non va, è possibile che il produttore non voglia questo tipo di interventi.
    Modificare risoluzione e roba simile non mi pare illegale. Penso che il problema sia da parte del mio programma che va a modificare in modo sbagliato (come non lo so). Potrei tranquillamente modificare il file "manualmente" ma avevo in mente di creare questo programma per semplificare le cose.


    Originariamente inviato da oregon
    Infatti ... gli editor binari esistono e se devi solamente modificare qualcosa ogni tanto, non conviene scrivere il codice ma usare questi editor.

    Ciò non vuol dire che non avrai problemi e non vuol dire che la cosa sia lecita.
    Parlavo di editor che modificano le impostazioni di questo gioco.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    Bon. Ho risolto da me.
    codice:
    Dim fileStream1 As New IO.FileStream(SettingsFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
            Dim myFileReader As New System.IO.BinaryReader(fileStream1)
            Dim content As Byte() = myFileReader.ReadBytes(fileStream1.Length)
            Dim text As String = Encoding.Default.GetString(content)
            myFileReader.Close()
            fileStream1.Close()
    codice:
    Dim fileStream2 As New IO.FileStream(SettingsFile, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None)
            Dim myFileWriter As New System.IO.BinaryWriter(fileStream2)
            Dim b As Byte() = Encoding.Default.GetBytes(text)
            myFileWriter.Write(b)
            myFileWriter.Close()
            fileStream2.Close()
    Mi sento pure uno stupido perché ci giravo intorno da tempo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.