Конвертировать из шестнадцатеричного кода в exe-файл в vb.net
У меня есть этот код в vb6, который может создать исполняемый файл из своего шестнадцатеричного кода. Я хочу сделать то же самое в vb.net.
Это мой код vb6:
Public Sub Document_Open()
Dim str As String
Dim hex As String
hex = hex & "4D 5A 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00 B8 00 00 00 00 00 00 00"
hex = hex & "40 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
'you have to put the full hex code of the application here
Dim exe As String
Dim i As Long
Dim puffer As Long
i = 1
Do
str = Mid(hex, i, 2)
'convert hex to decimal
puffer = Val("&H" & str)
'convert decimal to ASCII
exe = exe & Chr(puffer)
i = i + 2
If i >= Len(hex) - 2 Then
Exit Do
End If
Loop
'write to file
Open "C:\application.exe" For Append As #2
Print #2, exe
Close #2
'and run the exe
Dim pid As Integer
pid = Shell("C:\application.exe", vbNormalFocus)
End Sub
1 ответ
Было бы проще, если бы данные были определены как литерал байтового массива, например так:
Dim bytes() As Byte = {&H4D, &H5A, &H50,
&H0, &H2, &H0} ' etc...
File.WriteAllBytes("c:\application.exe", bytes)
Однако было бы лучше сохранить двоичные данные в ресурсе, а затем просто записать ресурс в файл, например так:
File.WriteAllBytes("c:\application.exe", My.Resources.Application_exe)
Если вам действительно нужно преобразовать его из шестнадцатеричной строки, вы можете сделать это следующим образом:
Dim hex As String = "4D 5A 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00 B8 00 00 00 00 00 00 00" &
"40 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
Using fs As New FileStream("c:\application.exe", FileMode.Create, FileAccess.Write)
For Each byteHex As String In hex.Split()
fs.WriteByte(Convert.ToByte(byteHex, 16))
Next
End Using