Hello.
Disclaimer 1: The following comments are guesses are very likely to be wrong.
Disclaimer 2: The following information applies to the files attached to the first post and very possibly do not relate to the Windows Live Messenger UIB format. (I have not looked at the newest versions of messenger, however versions 0.4 and 0.5 of the messenger UIB format are quite different )
Based on what I've seen so far with WLM's UIB files, putting the data tables in a seperate file make sense as the data tables are the biggest part of a UIB file. I didn't have much time to look at it, however here are the simple notes I have made for the files you posted:
code:
struct UIBHeader
{
char szSignature[4]; //"UIB\x1a"?
DWORD dwVersion; //0x0000046e version?
DWORD dwOffset1; // dt:0 bytes 0x00013c43
// notify:3375 bytes 0x00000742
// Perhaps this is stack machine code
DWORD dwOffset2; // dt:0 bytes 0x00013c43
// notify: 0 bytes 0x00001471
DWORD dwOffset3; // dt:2 bytes {0,0} 0x00013c43
// notify: 4922 bytes 0x00001471
DWORD dwEOF; // 0x00013c45 EOF
// 0x000027ab EOF
BYTE bDataTableType[2]; // 0xFF 0xFF <file offset> for no include
// 0x1F 0x80 <include string> for include
union {
DWORD dwOffsetDataTablePointers;
char szDataTablePath[]; // 0x04, 0x00 terminated?
}
}
struct DataTableStringEntry
{
BYTE bStringLength;
BYTE bUnknown; //0x80
char szString[bStringLength];
}
The files seem to have a lot of offsets to other parts of the file, however they are different from the UIB files I've seen before so it would take lots of time staring at it to connect the dots. Since the code that actually reads these files is not a normal windows binary, it would be a tad more difficult to reverse engineer. Hopefully this information combined with my other released information on the older versions will give you a big enough push in the right direction. (don't forget about the zip file that I posted which contains my full research in a header file. It's linked further down the page on the fanatic forums thread.)
If you get stuck again, feel free to ask for more help. I can't promise anything, but if I think of something I'll let you know.