Exemplo n.º 1
0
        private void ApplySHA1s()
        {
            int count = 0;

            foreach (byte[] sha1 in Sha1List)
            {
                if (count < Header.ebxCount)
                {
                    EbxEntry e = EbxList[count];
                    e._sha1        = sha1;
                    EbxList[count] = e;
                }
                if (count >= Header.ebxCount && count < Header.ebxCount + Header.resCount)
                {
                    ResEntry e = ResList[count - (int)Header.ebxCount];
                    e._sha1 = sha1;
                    ResList[count - (int)Header.ebxCount] = e;
                }
                if (count >= Header.ebxCount + Header.resCount)
                {
                    ChunkEntry e = ChunkList[count - (int)(Header.ebxCount + Header.resCount)];
                    e._sha1 = sha1;
                    ChunkList[count - (int)(Header.ebxCount + Header.resCount)] = e;
                }
                count++;
            }
        }
Exemplo n.º 2
0
 private void ReadResList(Stream data)
 {
     ResList = new List <ResEntry>();
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = new ResEntry();
         b.nameOffset = Helpers.ReadLEInt(data);
         b.ucsize     = Helpers.ReadLEInt(data);
         ResList.Add(b);
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.type     = Helpers.ReadLEInt(data);
         ResList[i] = b;
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.meta = new byte[16];
         data.Read(b.meta, 0, 16);
         ResList[i] = b;
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.id = new byte[8];
         data.Read(b.id, 0, 8);
         ResList[i] = b;
     }
 }
Exemplo n.º 3
0
 private void ReadResListData(Stream data, bool fast = false)
 {
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry e = ResList[i];
         e._data    = ReadPayload(data, e.ucsize, fast);
         ResList[i] = e;
     }
 }
Exemplo n.º 4
0
        private void ReadResListNames(Stream data)
        {
            long startOffset = data.Position;

            for (int i = 0; i < Header.resCount; i++)
            {
                ResEntry e = ResList[i];
                data.Seek(startOffset + e.nameOffset, 0);
                e._name    = Helpers.ReadNullString(data);
                ResList[i] = e;
            }
        }
Exemplo n.º 5
0
            TreeNode addType(ResEntry entry,TreeNode node)
            {
                IntPtr i = (IntPtr)entry.type;
                String type = ResourceTypes.getResTypeName(i);
                TreeNode[] treeList = node.Nodes.Find(type, false);

                if (treeList == null || treeList.Length == 0)
                {
                    TreeNode added = node.Nodes.Add(type);
                    added.Name = type;
                    treeList = new TreeNode[] { added };
                }
                return treeList[0];

            }
Exemplo n.º 6
0
        private void WriteStringTable(Stream s)
        {
            List <string> list = new List <string>();
            bool          found;

            foreach (EbxEntry e in EbxList)
            {
                found = false;
                foreach (string str in list)
                {
                    if (e._name == str)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    list.Add(e._name);
                }
            }
            foreach (ResEntry e in ResList)
            {
                found = false;
                foreach (string str in list)
                {
                    if (e._name == str)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    list.Add(e._name);
                }
            }
            int pos = 0;

            foreach (string str in list)
            {
                Helpers.WriteNullString(s, str);
                for (int i = 0; i < EbxList.Count; i++)
                {
                    if (EbxList[i]._name == str)
                    {
                        EbxEntry e = EbxList[i];
                        e.nameOffset = pos;
                        EbxList[i]   = e;
                    }
                }
                for (int i = 0; i < ResList.Count; i++)
                {
                    if (ResList[i]._name == str)
                    {
                        ResEntry e = ResList[i];
                        e.nameOffset = pos;
                        ResList[i]   = e;
                    }
                }
                pos += 1 + str.Length;
            }
            while (s.Position % 0x10 != 0)
            {
                s.WriteByte(0);
            }
        }
Exemplo n.º 7
0
 private void ReadResList(Stream data)
 {
     ResList = new List<ResEntry>();
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = new ResEntry();
         b.nameOffset = Helpers.ReadLEInt(data);
         b.ucsize = Helpers.ReadLEInt(data);
         ResList.Add(b);
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.type = Helpers.ReadLEInt(data);
         ResList[i] = b;
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.meta = new byte[16];
         data.Read(b.meta, 0, 16);
         ResList[i] = b;
     }
     for (int i = 0; i < Header.resCount; i++)
     {
         ResEntry b = ResList[i];
         b.id = new byte[8];
         data.Read(b.id, 0, 8);
         ResList[i] = b;
     }
 }
Exemplo n.º 8
0
            TreeNode addLang(ResEntry entry,TreeNode node)
            {
                String name = entry.lang.ToString();
                TreeNode[] treeList = node.Nodes.Find(name, false);
                if (treeList == null || treeList.Length == 0)
                {
                    TreeNode added = node.Nodes.Add(name);
                    added.Name = name;
                    treeList = new TreeNode[] { added };
                }
                return treeList[0];

            }
Exemplo n.º 9
0
 TreeNode addName(ResEntry entry,TreeNode node)
 {
     IntPtr i = (IntPtr)entry.name;
     String name = i.ToString();
     TreeNode[] treeList = node.Nodes.Find(name, false);
     if (treeList == null || treeList.Length == 0)
     {
         TreeNode added = node.Nodes.Add(name);
         added.Name = name;
         treeList = new TreeNode[] { added };
     }
     return treeList[0];
 }
Exemplo n.º 10
0
        public TreeNode init(String path)
        {
            ResEntry entry = new ResEntry();
            unsafe
            {
                ResEntry* r;
                r = testNew();
                testSet(ref *r);
                testSet(ref entry);
            }
            TreeNode root = new TreeNode("Current Resources");
            container = new Container(root);
            UInt64 hSeason = initSeasons();
            char[] str = new char[path.Length];
            str = path.ToCharArray();
            int bRet = openResModule(hSeason,path);
            if(bRet == 0)
            {
                MessageBox.Show("Cannot open <" + str + "> for reading");
            }
            enumAll(hSeason, MyEnumAllProc,ref container);
            closeResModule(hSeason);
            freeSeasons(hSeason);
            //byte[] p = (byte[])testNew();

            this.path = path;
            types.Clear();
            IntPtr hModule = LoadLibrary(path);
            if(hModule == null)
            {
                DialogResult box = MessageBox.Show("Module " + path + " cannot be loaded","FileVersion");
                return null;

            }
            UInt32 err = 0;
            long ret = EnumResourceTypes(hModule, new EnumResTypeProc(MyEnumResTypeProc),(IntPtr)0);
            err = GetLastError();
             
            FreeLibrary(hModule);
            if(ret == 0)
            {
                String x ;
                x = String.Format("{0:x8}", err);
                DialogResult box = MessageBox.Show("Module <" + path + "> resources cannot be enumerated " + x, "FileVersion");
            }
            return root;
        }
Exemplo n.º 11
0
 static extern void getResource(UInt64 hSeason, ref ResEntry entry, UInt32 size ,byte[] buffer);
Exemplo n.º 12
0
 static extern void getResourceSize(UInt64 hSeason,ref ResEntry entry,ref UInt32 size);
Exemplo n.º 13
0
 static extern void testSet(ref ResEntry entry);
Exemplo n.º 14
0
 bool MyEnumAllProc(ResEntry entry,ref Container container)
 {
     container.add(entry);
     return true;
 }
Exemplo n.º 15
0
            public void add(ResEntry entry)
            {

                list.Add(entry);

                TreeNode node = addType(entry,root);
                TreeNode nameNode = addName(entry, node);
                TreeNode lang = addLang(entry, nameNode);
                lang.Tag = entry;
            }