Example #1
0
        private void read()
        {
            readHeader();
            if (header.sig != VSMX_SIGNATURE)
            {
                Console.WriteLine(string.Format("Invalid VSMX signature 0x{0:X8}", header.sig));
                return;
            }
            if (header.ver != VSMX_VERSION)
            {
                Console.WriteLine(string.Format("Invalid VSMX version 0x{0:X8}", header.ver));
                return;
            }

            if (header.codeOffset > header.size())
            {
                Console.WriteLine(string.Format("VSMX: skipping range after header: 0x{0:X}-0x{1:X}", header.size(), header.codeOffset));
                seek(header.codeOffset);
            }

            if ((header.codeLength % VSMXGroup.SIZE_OF) != 0)
            {
                Console.WriteLine(string.Format("VSMX: code Length is not aligned to 8 bytes: 0x{0:X}", header.codeLength));
            }

            mem       = new VSMXMem();
            mem.codes = new VSMXGroup[header.codeLength / VSMXGroup.SIZE_OF];
            for (int i = 0; i < mem.codes.Length; i++)
            {
                mem.codes[i]       = new VSMXGroup();
                mem.codes[i].id    = read32();
                mem.codes[i].value = read32();
            }

            mem.texts      = readStrings(header.textOffset, header.textLength, header.textEntries, Charset.forName("UTF-16LE"), 2);
            mem.properties = readStrings(header.propOffset, header.propLength, header.propEntries, Charset.forName("UTF-16LE"), 2);
            mem.names      = readStrings(header.namesOffset, header.namesLength, header.namesEntries, Charset.forName("ISO-8859-1"), 1);

            //if (log.DebugEnabled)
            {
                debug();
            }
        }
Example #2
0
 public VSMXDecompiler(VSMX vsmx)
 {
     mem = vsmx.Mem;
 }