2008 - Problem beim HexEditor coden VB 

Status
Für weitere Antworten geschlossen.

Jannik

Registered +
Registriert
Apr. 2008
Beiträge
216
Hallo Leute,

ich habe folgendes Problem:

Ich will eine Art Patch coden, der einen bestimmte Hexstringzeile einer zweiten Datei editiert. Also das man keinen HexEditor mehr dafür braucht.

Bis dann,

Jannik93
 
Aus deiner Aussage kann ich kein Problem erkennen... Was möchtest du jetzt wissen?
 
eigentlich möchte ich wissen, ob und wie es möglich ist, den Hex einer Datei mit VB zu verändern.. ? :)

So besser? ^^
 
Du kannst binärdateien genauso öffnen wie ne txt datei. D.h. du musst in einem Hex editor den offset der Position rausfinden die du patchen willst. In deinem VB code musst du die exe die du patchen willst öffnen, an die offset position springen und den Wert dort neu setzen...
 
danke zerd für deine Antwort, hat irgendjemand ein beispiel dafür?

Edit:\\

Ich komme nicht weiter bitte helft mir!

So sieht mein Code bisher aus:

Dim fs As New System.IO.FileStream("Test111.exe", IO.FileMode.Open, FileAccess.Write)
Dim bw As New System.IO.BinaryWriter(fs)
Dim i As Integer = FreeFile()
bw.Seek("&H00000370", SeekOrigin.Begin)
bw.Write("0x006E060D4A3EC7857CD30E0074657374")
bw.Close()

Ich sitze da schon eine Ewigkeit dran, bitte helft mir!

Danke,

Jannik93
 
Zuletzt bearbeitet von einem Moderator:
Prinzipiell stimmt das schon so, VB spezifisch kann ich dir nicht helfen, weil ich kein VB spreche...

Aber du kannst ja im Hex editor nachschauen was falsch läuft indem du nachschaust wie nach dem patch der hex wert aussieht. Ich vermute es liegt an dem Wert den du da eintragen willst. Es kann sein das du das Byteweise machen musst, d.h. du musst jedes byte welches geändert werden soll einzeln ändern...
 
Naja, der Offset stimmt schon bis dahin, aber dann hackt es :(

hmm, wenn mir jemand helfen könnte der VB kennen würde...
 
Wenn du mir genau sagen könntest was das Programm machen soll kann ich dir vielleicht helfen:D
 
Das Programm soll hexwerte in einer exe Datei an einer bestimmen position mit anderen hex werten überschreiben. (z.B. um eine datei zu patchen / cracken whatever)
 
In der Richtung bin ich leider auch nicht so erfahren, aber müsste das nciht eigtl mit GET und PUT im Binärmodus gehen?

Also mit GET auslesen:
Code:
open DATEI for binary as #x
get #x, byte, variable
close #x

Oder mir PUT einfügen:
Code:
open DATEI for binary as #x
put #x, byte, variable
close #x

Shadow
 
Oh sorry, habs in VB Code umgewandelt:

Code:
FileOpen(1, "DATEI", OpenMode.Binary)
FilePut(1,variable,Byte)
FileClose()

Shadow
 
dankeschön, was ist mit "Variable" und was mit "Byte" gemeint?

Jannik93
 
Variable ist einfach der Inhalt der geschrieben werden soll und Byte ist die Position an der geschrieben wird!
 
Dim bw As New System.IO.BinaryWriter(File.Open("AnyDVDtray.exe", FileMode.Open))
bw.BaseStream.Position = "&H00000740"
bw.Write(" HIDDEN TEST ")
bw.Close()

So hab ich das jetzt gemacht. Ein Problem habe ich aber jetzt noch damit: Ich kann nur ASCII schreiben und nicht Hex...
 
Der oben ist komplett, fehlt halt nur noch die Dekleration:

Code:
Dim bytePos As Byte
Dim variable As Integer

bytePos = 1
variable = &H740

FileOpen(1, "DATEI", OpenMode.Binary)
FilePut(1, variable, bytePos)
FileClose()

Tata! :D

Shadow
 
und bei byte kommt "&H00000740" hin ?
Dim bytePos As Byte
Dim variable As Integer

bytePos = &H740
variable = 006E060D4A3EC7857CD30E0074657374

FileOpen(1, "DATEI", OpenMode.Binary)
FilePut(1, variable, bytePos)
FileClose()

So? xD
 
Zuletzt bearbeitet von einem Moderator:
Nope, das kommt bei Variable hin. BytePos ist die Position in meinem Beispiel 1, also ganz am Anfang!
 
ist ja jetzt sowieso egal, ich habe nen anderen weg gefunden :)

Dim bw As New System.IO.BinaryWriter(File.Open("Test.exe", FileMode.Open))
Dim hex As Byte() = New Byte() {&H0, &H6E, &H6, &HD, &H4A, &H3E, &HC7, &H85, &H7C, &HD3, &HE, &H0, &H74, &H65, &H73, &H74}
bw.BaseStream.Position = "&H00000740"
bw.Write(Hex)
bw.Close()
Me.Close()

Außerdem: Wieso wirst du mir nicht als Online angezeigt?
 
jo danke ich hab noch ein paar fragen an euch:

- Ich gebe ein Wort in eine Textbox ein
1. Wie kann ich auslesen wie viele Buchstaben eingetippt wurden?
2. Wie kann ich das eingetippte Wort aufteilen? z.B. einmal den 1. Buchstaben in einen String reinpacken, dann Zeichen 2 - 5 in einen String und dann die Zeichen 5 - 9 in String 3.
3. Wie wandle ich einen String in einen Hexwert um?

Dankeschön!
 
Zuletzt bearbeitet von einem Moderator:
0.
PHP:
 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim anzahl, i As Byte
anzahl = TextBox1.Text.Length
If anzahl >= 13 Then
TextBox1.Text = TextBox1.Text.Substring(0, 13)
End If
End Sub

1. anzahl = TextBox1.Text.Length

2.
string1=TextBox1.Text.Substring(0, 1)
string2=TextBox1.Text.Substring(2, 3)
string3=TextBox1.Text.Substring(5, 4)

3.
meinst du das es zb. 64 von dezimal in hexadezimal umwandelt?

edit:
wir sagen mal das ich das richtig aufgefasst hab da müsste da geht das so

PHP:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dez As Integer = TextBox2.Text
Dim rest(100) As String
Dim i, j, länge, ablage As Integer
länge = TextBox2.Text.Length
For i = 1 To länge
rest(i) = dez Mod 16
dez = dez \ 16
j = i
If rest(i) > 9 Then
ablage = rest(i)
If ablage = 10 Then rest(i) = "A"
If ablage = 11 Then rest(i) = "B"
If ablage = 12 Then rest(i) = "C"
If ablage = 13 Then rest(i) = "D"
If ablage = 14 Then rest(i) = "E"
If ablage = 15 Then rest(i) = "F"
End If
If dez = 0 Then Exit For
Next

For i = j To 0 Step -1
TextBox1.Text = TextBox1.Text + rest(i)
Next
End Sub

hab aber jetzt bloß von dez in hex gemacht
 
Zuletzt bearbeitet von einem Moderator:
1 -> Erledigt -> Danke
2 -> Erledigt -> Danke

3 -> Ich möchte zum Beispiel einen String (z.B. "Hallo! Wie gehts?") conventieren ins "Hex"-Format z.B. " ; " nach "203a20"
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten