I am trying to make a simple program to find some values in a file. These files are .arkprofile
files and belong to the game ARK.
These .arkprofile files include some readable text as well as some scrambled text if you open it in a regular editor. All the values I need are in ASCII so I could get them all manually, but the intention of this program is to go through a lot of files to grab out the character names. Here is how it looks like in the file in a regular text editor:
PlayerCharacterName.....StrProperty.............CHARACTERNAMEHERE
Can I find this string without decompiling the file as hex first? Is it possible to convert the string to bytes and do the search from there?
This is the code I have at the moment, but it is not suited for my need as the hex offset for the string is not the same for all the files.
Dim pos1 As Long = 864
Dim requiredBytes As Integer = 160
Dim value(0 To requiredBytes - 1) As Byte
Using reader As New BinaryReader(File.Open(fd.FileName, FileMode.Open))
' Loop through length of file.
Dim fileLength As Long = reader.BaseStream.Length
Dim byteCount As Integer = 0
reader.BaseStream.Seek(pos1, SeekOrigin.Begin)
While pos1 < fileLength And byteCount < requiredBytes
value(byteCount) = reader.ReadByte()
pos1 += 1
byteCount += 1
End While
End Using
The dots between the strings change hex value from file to file, but its always the same amount of dots. Max character name allowed on ARK is 24, so my idea now was to first find that string in the file, start writing bytes from the end of that file for 128 bytes. "PlayerCharacterName.....StrProperty............." = 60 bytes. This is where the username would start and can be up to 24 characters long which is 48 bytes. Then I could filter out the remaining characters that are not a part of the username and display it in ASCII.
Am I way off track here?