Hallo,
ich arbeite momentan an einem Programm das auch Dateien (meist .exe) wie ein HEX Editor öffnet, gestimmte Zeilen ändert und wieder speichert.
Momentan sieht mein Code so aus:
Spoiler anzeigen
Wenn ich jedoch eine größere Datei öffne, braucht diese zu lange (ich habe immer abgebrochen) um zu laden.
Gibt es eine einfachere möglichkeit?
Danke im Vorraus.
ich arbeite momentan an einem Programm das auch Dateien (meist .exe) wie ein HEX Editor öffnet, gestimmte Zeilen ändert und wieder speichert.
Momentan sieht mein Code so aus:
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Dim HEX As String
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
- Using File As New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
- Dim value As Integer = File.ReadByte
- Do Until value = -1
- HEX = HEX & (value.ToString("X2"))
- value = File.ReadByte
- Loop
- End Using
- Richtextbox1.text = HEX
- End If
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Try
- If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
- Dim fs As New IO.FileStream(SaveFileDialog1.FileName, IO.FileMode.Create)
- For x As Integer = 0 To HEX.Length - 1 Step 8
- Dim ui As UInt32
- ui = Convert.ToUInt32(HEX.Substring(x, 8), 16)
- Dim b() As Byte = BitConverter.GetBytes(ui)
- fs.Write(b, 0, b.Length)
- Next
- fs.Close()
- End If
- Catch
- End Try
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- Dim DOSmode As String = "546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F6465"
- Dim noDOSmode As String = "0000000000000000000000000000000000000000000000000000000000000000000000000000"
- RichTextBox1.Text = Replace(RichTextBox1.Text, DOSmode, noDOSmode)
- End Sub
- End Class
Wenn ich jedoch eine größere Datei öffne, braucht diese zu lange (ich habe immer abgebrochen) um zu laden.
Gibt es eine einfachere möglichkeit?
Danke im Vorraus.