Rob*_*Rob 5 binary file-format reverse-engineering
我正在尝试编写一个小实用程序来生成一个二进制文件,该文件将模仿另一个封闭应用程序生成的文件.我已经使用十六进制编辑器来解密格式,因为我试图理解格式/编码是什么,以便我可以使用C++或C#生成它.
该文件以前四个字节开头:01 00后跟FF FE.我的理解是该文件以SOH开头,后跟小端的字节顺序标记.在这四个字节之后,程序似乎为应用程序GUI中的每个字符串字段写入BSTR.
使用C#,我生成了一个以FF FE开头的unicode文件,但我不知道如何首先插入SOH字符.
如果有人能够提供文件格式或编码的洞察以及文件以SOH字符开头的原因,我将永远感激不尽.
先感谢您.
如果您在写出前四个字节时遇到困难,这将为您解决。
using (var stream = new FileStream("myfile.bin", FileMode.Create))
{
using (var binaryWriter = new BinaryWriter(stream))
{
binaryWriter.Write((byte)1);
binaryWriter.Write((byte)0);
binaryWriter.Write((byte)0xFF);
binaryWriter.Write((byte)0xFE);
binaryWriter.Write(Encoding.Unicode.GetBytes("string"));
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出以下文件
01 00 FF FE 73 00 74 00 72 00 69 00 6e 00 67 00 ....s.t.r.i.n.g.
Run Code Online (Sandbox Code Playgroud)
编辑:添加了 Mark H 关于写出字符串的建议。