2013-07-26 54 views
0

我在十六車間打開一個.exe文件,我想編輯這個線的BinaryWriter(VB.NET):十六進制編輯與

hex

怎麼可能用VB。 NET使用BinaryWriter?該行代表了exe的IP。我想要一個包含文本框的程序,在其中放置新的IP。所以,我到目前爲止:

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

那麼,我設置了什麼位置,我會寫什麼類型?字節?謝謝。

+0

也許你應該看看這個:http://msdn.microsoft.com/en-us/library/system.io.binarywriter.aspx或在這樣的其他代碼:http://www.dotnetperls。 com/binarywriter-vbnet在讀一下關於BinaryWriter的信息之後,你所要求的並不是很難被發現。 – varocarbas

+0

很難將知識產權解釋爲知識產權以外的任何其他知識產權,通常由許可協議涵蓋,並聲明您不能這樣做。如果你的意思是指令指針,那麼請注意你實際上在該文件中篡改* data *,而不是代碼。如果你不知道數據在文件中的位置,那麼你很難找到它。除了使用工具。像十六進制查看器更改文件只需要FileStream,使用Seek + Write。 –

回答

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 

只要確保您的字符串的第一個字符有正確的偏移量