0

我在 Hex Workshop 中打开一个 .exe 文件,我想编辑这一行:

十六进制

使用 BinaryWriter 的 VB.NET 怎么可能?该行表示 exe 的 IP。我想要一个程序,其中包含一个放置新 IP 的文本框。所以,我到目前为止:

Using writer As BinaryWriter = New BinaryWriter(File.Open("C:\localhost.exe", FileMode.Open))
            writer.BaseStream.Position = ???
            writer.write???
            End Using

那么,我将它设置到什么位置,我写什么类型?字节?谢谢。

4

1 回答 1

0

查找字符串中第一个字符的偏移量并使用此方法:

Private Sub Patch(ByVal TargetFile As String, ByVal FileOffset As Long, ByVal NewValue() As Byte)
    Try
        Dim br As BinaryReader = New BinaryReader(File.Open(TargetFile, FileMode.Open))
        br.BaseStream.Position = FileOffset
        Dim byteB As Byte
        For Each byteB In NewValue
            If (byteB.ToString <> String.Empty) Then
                br.BaseStream.WriteByte(byteB)
            Else
                Exit For
            End If
        Next byteB
        br.Close()
    Catch
    End Try
End Sub

像这样:

Patch("C:\localhost.exe", Val("OFFSET OF FIRST CHARACTER IN STRING"), New Byte() {&H31, &H32, &H37, &H2e, &H30, &H2e, &H30, &H2e, &H38})

或者代替你的字节数组,使用这个:

System.Text.Encoding.ASCII.GetBytes("127.0.0.8") 'It'll change 127.0.0.1 to 127.0.0.8

只需确保字符串的第一个字符具有正确的偏移量

于 2013-12-29T23:48:35.517 回答