For better or worse, the easy-to-use FileSystemObject class cannot access in binary mode, only in text mode. Then again, that's probably a good thing, since the FSO is part of VBScript, and hence is inefficient. You need to use the old-style VB I/O statements, which are a little odd looking, but really work a lot like typical C I/O. For example:
Dim iFile As Integer
Dim lByteLen As Long
Dim bytData As Byte
Dim bytArray() As Byte
Dim sHex As String
'get an available file ID
iFile = FreeFile
'open the file for access
Open "C:\MyFile.ext" For Binary As iFile
'get current len of file
lByteLen = LOF(iFile)
If lByteLen >= 11 Then
Get iFile, 11, bytData
sHex = Hex(bytData)
'write over a byte
bytData = Asc("Z")
Put iFile, 9, bytData
'grab entire file contents
Redim bytArray(1 To lByteLen)
Get iFile, 1, bytArray
End If
'must close file when done
Close iFile
TextBox1.Text = sHex
It's important when accessing in binary mode, that you check how many bytes exist before attempting to read at a specific byte position. Also, note that VB uses 1-based arrays, so the first byte is #1, not zero as in C and most other languages. The byte position for Get and Put (2nd parameter) indicates where reading/writing begins, but not the number of bytes accessed. VB figures that out automatically for you, depending on the size of the variable to be loaded/read (3rd param). By resizing bytArray to the size of the file, Get() was able to load the entire file into the array.
Converting to hex is as simple as calling the Hex() function, as shown.
For more options with "Open", put your cursor on it, and hit F1 to invoke the corresponding help file.
Say, it's been so long since I've used these routines, that I did a quick check on MSDN to see if I screwed-up. There I found a page I wish was around in the VB3 days:
"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconmanipulatingfiles.asp"
I think you'll find it a good overview of VB file I/O, though it has no examples of binary access.
Cheers