public static void AddClass(fClass c) { foreach (cProp p in c.properties) { propertyTypes.Add(c.name + "." + p.name, p.type); } FoundClasses.Add(c); }
public CItemEntry(fClass c) { _ID = (uint)(last_ID + 1); last_ID = (int)_ID; this.cls = c; if (_ID < Global.itemnames.Count) _Name = Global.itemnames[(int)_ID]; else _Name = ""; }
private fClass getC(string property, string type) { string[] steps = property.Split('.'); long pos = classStream.Position; if (steps.Length == 1) { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + property), SeekOrigin.Current); classStream.Seek(br.ReadInt32(), SeekOrigin.Begin); fClass c = new fClass(classStream, this.getType(property)); classStream.Seek(pos, SeekOrigin.Begin); return(c); } else { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + steps[0]), SeekOrigin.Current); int i = br.ReadInt32(); classStream.Seek(i, SeekOrigin.Begin); property = ""; int x; for (x = 1; x < steps.Length - 1; x++) { property += steps[x] + "."; } property += steps[x]; string t = this.getType(steps[0]); string main_name = this.name; this.name = t; fClass c = null; try { c = getC(property, t); } finally { this.name = main_name; classStream.Seek(pos, SeekOrigin.Begin); } return(c); } }
public void FindClasses(List <String> classes) { Stream s = this.stream; start = s.Position; BinaryReader br = new BinaryReader(s); flags = br.ReadUInt16(); ushort unkn = br.ReadUInt16(); int c; string name = ""; while ((char)(c = br.ReadChar()) != '\0') { name += (char)c; } Debug.Print("{0}", name); minor_version = br.ReadUInt16(); minor_version = br.ReadUInt16(); ulong cnt; Debug.Print("IS {0:x} {1:x}\n", br.BaseStream.Position, len + start); intStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { skipS32(br.BaseStream); } Debug.Print("UIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); uintStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { skipU32(br.BaseStream); } Debug.Print("DS {0:x} {1:x}\n", br.BaseStream.Position, len + start); doubleStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { br.ReadDouble(); } Debug.Print("SS {0:x} {1:x}\n", br.BaseStream.Position, len + start); stringStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { //Debug.Print("{0}",readString(br.BaseStream)); skipString(br.BaseStream); } Debug.Print("NSS {0:x} {1:x}\n", br.BaseStream.Position, len + start); namespaceStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { switch (br.ReadByte()) { case 8: case 5: case 22: case 23: case 24: case 25: case 26: skipU32(br.BaseStream); break; default: Debugger.Break(); break; } } Debug.Print("NSSS {0:x} {1:x}\n", br.BaseStream.Position, len + start); namespacesetStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { ulong cnt2 = getU32(br.BaseStream); for (ulong m = 0; m < cnt2; m++) { skipU32(br.BaseStream); } } Debug.Print("MNS {0:x} {1:x}\n", br.BaseStream.Position, len + start); multinameStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { short kind = br.ReadByte(); switch (kind) { case 7: case 13: case 9: case 14: skipU32(br.BaseStream); //namespace skipU32(br.BaseStream); //name break; case 15: case 16: case 27: skipU32(br.BaseStream); break; case 17: case 18: break; case 29: //experimental,GENERIC skipU32(br.BaseStream); ulong param_count = getU32(br.BaseStream); skipU32(br.BaseStream); if (param_count != 1) { Debugger.Break(); } break; case 28: //experimental,Multiname_LA skipU32(br.BaseStream); break; default: Debug.Print("MNS Error {0:x} {1:x} kind:{2}\n", br.BaseStream.Position, len + start, kind); return; //break; } } Debug.Print("MIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); methodinfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { ulong param_count = getU32(br.BaseStream); skipU32(br.BaseStream); for (ulong m = 0; m < param_count; m++) { skipU32(br.BaseStream); } ulong name_index = getU32(br.BaseStream); uint mis_flags = br.ReadByte(); if ((mis_flags & 8) != 0) { ulong optional_count = getU32(br.BaseStream); for (ulong m = param_count - optional_count; m < param_count; ++m) { skipU32(br.BaseStream); br.ReadByte(); } } if ((mis_flags & 128) != 0) { for (uint m = 0; m < param_count; ++m) { skipU32(br.BaseStream); } } } Debug.Print("MDIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); metadatainfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { skipU32(br.BaseStream); ulong cnt2 = getU32(br.BaseStream); for (ulong m = 0; m < cnt2; m++) { skipU32(br.BaseStream); skipU32(br.BaseStream); } } Debug.Print("IIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); instanceinfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); bool[] classfound = new bool[cnt]; for (ulong n = 0; n < cnt; n++) { string instanceName = getLabel(getU32(br.BaseStream)); string superclass = getLabel(getU32(br.BaseStream)); if ((br.ReadByte() & 8) != 0) { skipU32(br.BaseStream); } ulong cnt2 = getU30(br.BaseStream); for (ulong m = 0; m < cnt2; m++) { skipU32(br.BaseStream); } skipU32(br.BaseStream); if (!classes.Contains(instanceName)) { skipTraits(br); } else { fClass instance = new fClass(); instance.name = instanceName; instance.superclass = superclass; Debug.Print("Instance:{0} found!", instanceName); List <cProp> prop = new List <cProp>(); getTraits(br, out prop); instance.properties = prop; fClass.AddClass(instance); //if (fClass.Count == classes.Count) return; classfound[n] = true; } } Debug.Print("CIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); classinfoStart = br.BaseStream.Position; int cpos = 0; for (ulong n = 0; n < cnt; n++) { if (!classfound[n]) { skipU32(br.BaseStream); skipTraits(br); } else { List <cProp> prop = new List <cProp>(); skipU32(br.BaseStream); Debug.Print("Additional info for Instance:{0} found!", fClass.GetClassName(cpos)); getTraits(br, out prop); fClass instance = new fClass(); instance.name = "static " + fClass.GetClassName(cpos); instance.properties = prop; fClass.AddClass(instance); //fClass.AddStaticPropertiesToClass(cpos, prop); cpos++; } } /*Debug.Print("SIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); * scriptinfoStart = br.BaseStream.Position; * cnt = getU30(br.BaseStream); * for (ulong n = 0; n < cnt; n++) * { * skipU32(br.BaseStream); * skipTraits(br); * } * * Debug.Print("MBS {0:x} {1:x}\n", br.BaseStream.Position, len + start); * methodbodyStart = br.BaseStream.Position; * * cnt = getU30(br.BaseStream); * for (ulong n = 0; n < cnt; n++) * { * ulong minfo = getU32(br.BaseStream); * ulong max_stack = getU32(br.BaseStream); * ulong max_regs = getU32(br.BaseStream); * ulong scope_depth = getU32(br.BaseStream); * ulong max_scope = getU32(br.BaseStream); * ulong code_length = getU32(br.BaseStream); * * byte[] buf = new byte[code_length]; * br.Read(buf, 0, (int)code_length); * parseCode(buf); * * ulong ex_count = getU32(br.BaseStream); * for (ulong m = 0; m < ex_count; m++) * { * skipU32(br.BaseStream); * skipU32(br.BaseStream); * skipU32(br.BaseStream); * skipU32(br.BaseStream); * skipU32(br.BaseStream); * } * * skipTraits(br); * }*/ Debug.Print("End parse {0:x} {1:x}\n", br.BaseStream.Position, len + start); }
public static void AddClass(fClass c) { foreach (cProp p in c.properties) propertyTypes.Add(c.name + "." + p.name, p.type); FoundClasses.Add(c); }
private fClass getObject(string property, string type, uint index,string type2) { string[] steps = property.Split('.'); long pos = classStream.Position; if (steps.Length == 1) { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + property), SeekOrigin.Current); uint off = br.ReadUInt32(); classStream.Seek(off & 0xFFFFFFF8, SeekOrigin.Begin); classStream.Seek(0x10, SeekOrigin.Current); uint list = (br.ReadUInt32() & 0xFFFFFFF8); short cnt = br.ReadInt16(); //07.10.2011 ... + 0xC classStream.Seek(list+0xC, SeekOrigin.Begin); uint gotopos = 0; for (int i = 0; i < cnt; i++) { uint idx = br.ReadUInt32(); if(idx==0){cnt++;continue;} uint p = br.ReadUInt32(); if ((idx - 6) / 8 == index) { gotopos = p & 0xFFFFFFF8; break; } } fClass c = null; if (gotopos != 0) { classStream.Seek(gotopos, SeekOrigin.Begin); c = new fClass(classStream, type2); } classStream.Seek(pos, SeekOrigin.Begin); return c; } else { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + steps[0]), SeekOrigin.Current); int i = br.ReadInt32(); classStream.Seek(i, SeekOrigin.Begin); property = ""; int x; for (x = 1; x < steps.Length - 1; x++) property += steps[x] + "."; property += steps[x]; string t = this.getType(steps[0]); string main_name = this.name; this.name = t; fClass c = null; try { c = getObject(property, t,index,type2); } finally { this.name = main_name; classStream.Seek(pos, SeekOrigin.Begin); } return c; } }
private fClass getC(string property, string type) { string[] steps = property.Split('.'); long pos = classStream.Position; if (steps.Length == 1) { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + property), SeekOrigin.Current); classStream.Seek(br.ReadInt32(),SeekOrigin.Begin); fClass c = new fClass(classStream, this.getType(property)); classStream.Seek(pos, SeekOrigin.Begin); return c; } else { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + steps[0]), SeekOrigin.Current); int i = br.ReadInt32(); classStream.Seek(i, SeekOrigin.Begin); property = ""; int x; for (x = 1; x < steps.Length - 1; x++) property += steps[x] + "."; property += steps[x]; string t = this.getType(steps[0]); string main_name = this.name; this.name = t; fClass c = null; try { c = getC(property, t); } finally { this.name = main_name; classStream.Seek(pos, SeekOrigin.Begin); } return c; } }
private fClass getObject(string property, string type, uint index, string type2) { string[] steps = property.Split('.'); long pos = classStream.Position; if (steps.Length == 1) { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + property), SeekOrigin.Current); uint off = br.ReadUInt32(); classStream.Seek(off & 0xFFFFFFF8, SeekOrigin.Begin); classStream.Seek(0x10, SeekOrigin.Current); uint list = (br.ReadUInt32() & 0xFFFFFFF8); short cnt = br.ReadInt16(); //07.10.2011 ... + 0xC classStream.Seek(list + 0xC, SeekOrigin.Begin); uint gotopos = 0; for (int i = 0; i < cnt; i++) { uint idx = br.ReadUInt32(); if (idx == 0) { cnt++; continue; } uint p = br.ReadUInt32(); if ((idx - 6) / 8 == index) { gotopos = p & 0xFFFFFFF8; break; } } fClass c = null; if (gotopos != 0) { classStream.Seek(gotopos, SeekOrigin.Begin); c = new fClass(classStream, type2); } classStream.Seek(pos, SeekOrigin.Begin); return(c); } else { BinaryReader br = new BinaryReader(classStream); classStream.Seek(Offset(type + "." + steps[0]), SeekOrigin.Current); int i = br.ReadInt32(); classStream.Seek(i, SeekOrigin.Begin); property = ""; int x; for (x = 1; x < steps.Length - 1; x++) { property += steps[x] + "."; } property += steps[x]; string t = this.getType(steps[0]); string main_name = this.name; this.name = t; fClass c = null; try { c = getObject(property, t, index, type2); } finally { this.name = main_name; classStream.Seek(pos, SeekOrigin.Begin); } return(c); } }
/*private static void findItemsClass(IntPtr handle, RemoteMemoryStream rms, uint start, uint size) { rms.InitCache(start, start + size); Application.DoEvents(); try { uint i = 0; uint v; uint w; BinaryReader binr = new BinaryReader(rms); for (i = 0; i < size - 0x5C; i += 4) { rms.Seek(start + i, SeekOrigin.Begin); //v = mem[(i) / 4]; v = binr.ReadUInt32(); if (v != SwfClassToken) continue; rms.Seek(start + i, SeekOrigin.Begin); fClass economic = new fClass(rms, "mResources_vector"); fClass items = economic.gC("mResources_vector"); itemEntries = new List<CItemEntry>(); CItemEntry.reset(); foreach (fClass it in items.getClassList("dResourceDefaultDefinition")) { string n = it.gSTR("resourceName_string"); Debug.Print("{0} {1}", it.gINT("amount"), n); if ((n != "Population") && (n != "HardCurrency")) itemEntries.Add(new CItemEntry(it)); } } } catch (EndOfStreamException e) { return; } }*/ private static void findMainClass(IntPtr handle, RemoteMemoryStream rms, Int64 start, Int64 size) { rms.InitCache(start, start + size); Application.DoEvents(); try { uint i = 0; uint v; uint w; uint swftoken; BinaryReader binr = new BinaryReader(rms); for (i = 0; i < size - 0x5C; i += 4) { rms.Seek(start + i, SeekOrigin.Begin); //v = mem[(i) / 4]; v = binr.ReadUInt32(); if ((v < (uint)npswf.BaseAddress) || (v > (uint)((uint)npswf.BaseAddress + npswf.ModuleMemorySize))) continue; swftoken = v; rms.Seek(start+i, SeekOrigin.Begin); fClass player = new fClass(rms, "cPlayerData"); /*if (start + i > 0xBEF0000) { v = binr.ReadUInt32(); v = binr.ReadUInt32(); if ((v & 0xFFFF) == 4) { string s = player.getClassName(); if (s != "") Debug.Print("{0:x} Classname {1}",start+i, s); } }*/ if (player.gUINT("mGeologistsAmount") > 25) continue; if (player.gUINT("mExplorersAmount") > 25) continue; if (player.gUINT("mPlayerId") == 0) continue; if (player.gUINT("mPlayerLevel") > 50) continue; if (player.gUINT("mPlayerLevel") == 0) continue; //Debug.Print("P level {0}", player.gUINT("mPlayerLevel")); if (player.gUINT("mGeneralsAmount") > 25) continue; v = player.gUINT("mCurrentBuildingsCountAll"); w = player.gUINT("mCurrentMaximumBuildingsCountAll"); if (w < v) continue; if (v == 0) continue; if (v > 1000) continue; if (w > 1000) continue; if (w == 0) continue; Debug.Print("Main class at?: {0:x}", start + i); Debug.Print("Buildings {0}/{1}", w, v); //if (w == 135) Debugger.Break(); fClass resources = player.gO("mGeneralInterface.mCurrentPlayerZone.map_PlayerID_Resources", player.gUINT("mPlayerId"), "cResources"); if (resources == null) continue; fClass items = resources.gC("mResources_vector"); Debug.Print("mResources_vector: {0:x}", resources.gUINT("mResources_vector")); itemEntries = new List<CItemEntry>(); CItemEntry.reset(); foreach (fClass it in items.getClassList("dResource")) { string n=it.gSTR("name_string"); Debug.Print("{0} {1}", it.gINT("amount"), n); if((n!="Population")&&(n!="HardCurrency")) itemEntries.Add(new CItemEntry(it)); } MainClass = start + i; fClass fdeposits = player.gC("mGeneralInterface.mCurrentPlayerZone.mStreetDataMap.mDeposits_vector"); Debug.Print("Deposits at?: {0:x}", fdeposits.getOffset()); foreach (fClass r in fdeposits.getClassList("cDeposit")) { CResourceEntry RE = new CResourceEntry(r); Debug.Print("{0}", RE.Name); if (!(((RE.Name == "Wood") || (RE.Name == "RealWood")) && !Params.trees)) resourceEntries.Add(RE); } DbConnection3.Open(); fClass fbuildings = player.gC("mGeneralInterface.mCurrentPlayerZone.mStreetDataMap.mBuildings_vector"); Buildings = new Dictionary<String, uint>(); buildingEntries = new List<CBuildingEntry>(); Debug.Print("Buildings at?: {0:x}", fbuildings.getOffset()); foreach (fClass b in fbuildings.getClassList("cBuilding")) { CBuildingEntry BE = new CBuildingEntry(b); Debug.Print("{0} {1} {2}", BE.Name, BE.X, BE.Y); Debug.Print("{0}", BE.wayTime1); Debug.Print("{0}", BE.wayTime2); if (!Buildings.ContainsKey(BE.Name)) Buildings.Add(BE.Name, 1); else Buildings[BE.Name]++; buildingEntries.Add(BE); } DbConnection3.Close(); MainClass = start + i; SwfClassToken = swftoken; Debug.Print("Main class at: {0:x}", start + i); Debug.Print("{0:x}", player.gC("mGeneralInterface.mCurrentPlayerZone").getOffset()); rms.RemoveCache(); } } catch (EndOfStreamException e) { return; } return; }
public void FindClasses(List<String> classes) { Stream s=this.stream; start=s.Position; BinaryReader br = new BinaryReader(s); flags = br.ReadUInt16(); ushort unkn = br.ReadUInt16(); int c; string name=""; while((char)(c=br.ReadChar())!='\0') name += (char)c; Debug.Print("{0}", name); minor_version = br.ReadUInt16(); minor_version = br.ReadUInt16(); ulong cnt; Debug.Print("IS {0:x} {1:x}\n", br.BaseStream.Position, len+start); intStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) skipS32(br.BaseStream); Debug.Print("UIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); uintStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) skipU32(br.BaseStream); Debug.Print("DS {0:x} {1:x}\n", br.BaseStream.Position, len + start); doubleStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) br.ReadDouble(); Debug.Print("SS {0:x} {1:x}\n", br.BaseStream.Position, len + start); stringStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { //Debug.Print("{0}",readString(br.BaseStream)); skipString(br.BaseStream); } Debug.Print("NSS {0:x} {1:x}\n", br.BaseStream.Position, len + start); namespaceStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { switch (br.ReadByte()) { case 8: case 5: case 22: case 23: case 24: case 25: case 26: skipU32(br.BaseStream); break; default: Debugger.Break(); break; } } Debug.Print("NSSS {0:x} {1:x}\n", br.BaseStream.Position, len + start); namespacesetStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { ulong cnt2 = getU32(br.BaseStream); for (ulong m = 0; m < cnt2; m++) skipU32(br.BaseStream); } Debug.Print("MNS {0:x} {1:x}\n", br.BaseStream.Position, len + start); multinameStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 1; n < cnt; n++) { short kind = br.ReadByte(); switch (kind) { case 7: case 13: case 9: case 14: skipU32(br.BaseStream);//namespace skipU32(br.BaseStream);//name break; case 15: case 16: case 27: skipU32(br.BaseStream); break; case 17: case 18: break; case 29://experimental,GENERIC skipU32(br.BaseStream); ulong param_count = getU32(br.BaseStream); skipU32(br.BaseStream); if (param_count != 1) Debugger.Break(); break; case 28://experimental,Multiname_LA skipU32(br.BaseStream); break; default: Debug.Print("MNS Error {0:x} {1:x} kind:{2}\n", br.BaseStream.Position, len + start,kind); return; //break; } } Debug.Print("MIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); methodinfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { ulong param_count = getU32(br.BaseStream); skipU32(br.BaseStream); for (ulong m = 0; m < param_count; m++) skipU32(br.BaseStream); ulong name_index = getU32(br.BaseStream); uint mis_flags=br.ReadByte(); if ((mis_flags & 8) != 0) { ulong optional_count = getU32(br.BaseStream); for (ulong m = param_count - optional_count; m < param_count; ++m) { skipU32(br.BaseStream); br.ReadByte(); } } if ((mis_flags & 128) != 0) for(uint m = 0; m< param_count; ++m) skipU32(br.BaseStream); } Debug.Print("MDIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); metadatainfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { skipU32(br.BaseStream); ulong cnt2 = getU32(br.BaseStream); for (ulong m = 0; m < cnt2; m++) { skipU32(br.BaseStream); skipU32(br.BaseStream); } } Debug.Print("IIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); instanceinfoStart=br.BaseStream.Position; cnt = getU30(br.BaseStream); bool[] classfound=new bool[cnt]; for (ulong n = 0; n < cnt; n++) { string instanceName = getLabel(getU32(br.BaseStream)); string superclass = getLabel(getU32(br.BaseStream)); if((br.ReadByte() & 8)!=0) skipU32(br.BaseStream); ulong cnt2 = getU30(br.BaseStream); for (ulong m = 0; m < cnt2; m++) skipU32(br.BaseStream); skipU32(br.BaseStream); if(!classes.Contains(instanceName)) skipTraits(br); else { fClass instance=new fClass(); instance.name=instanceName; instance.superclass = superclass; Debug.Print("Instance:{0} found!", instanceName); List<cProp> prop = new List<cProp>(); getTraits(br,out prop); instance.properties = prop; fClass.AddClass(instance); //if (fClass.Count == classes.Count) return; classfound[n] = true; } } Debug.Print("CIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); classinfoStart = br.BaseStream.Position; int cpos = 0; for (ulong n = 0; n < cnt; n++) { if (!classfound[n]) { skipU32(br.BaseStream); skipTraits(br); } else { List<cProp> prop = new List<cProp>(); skipU32(br.BaseStream); Debug.Print("Additional info for Instance:{0} found!", fClass.GetClassName(cpos)); getTraits(br, out prop); fClass instance = new fClass(); instance.name = "static " + fClass.GetClassName(cpos); instance.properties = prop; fClass.AddClass(instance); //fClass.AddStaticPropertiesToClass(cpos, prop); cpos++; } } /*Debug.Print("SIS {0:x} {1:x}\n", br.BaseStream.Position, len + start); scriptinfoStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { skipU32(br.BaseStream); skipTraits(br); } Debug.Print("MBS {0:x} {1:x}\n", br.BaseStream.Position, len + start); methodbodyStart = br.BaseStream.Position; cnt = getU30(br.BaseStream); for (ulong n = 0; n < cnt; n++) { ulong minfo = getU32(br.BaseStream); ulong max_stack = getU32(br.BaseStream); ulong max_regs = getU32(br.BaseStream); ulong scope_depth = getU32(br.BaseStream); ulong max_scope = getU32(br.BaseStream); ulong code_length = getU32(br.BaseStream); byte[] buf = new byte[code_length]; br.Read(buf, 0, (int)code_length); parseCode(buf); ulong ex_count = getU32(br.BaseStream); for (ulong m = 0; m < ex_count; m++) { skipU32(br.BaseStream); skipU32(br.BaseStream); skipU32(br.BaseStream); skipU32(br.BaseStream); skipU32(br.BaseStream); } skipTraits(br); }*/ Debug.Print("End parse {0:x} {1:x}\n", br.BaseStream.Position, len + start); }
public CBuildingEntry(fClass c) { this.cls = c; Name = cls.gSTR("mBuildingName_string"); }