Il2CppGlobalMetadataHeader.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import {NativeStruct} from "./NativeStruct";
  2. import {log, logHHex} from "../../logger";
  3. import {
  4. STRUCT_TYPE_IL2CPP_METADATA_USAGE_LIST,
  5. STRUCT_TYPE_IL2CPP_METADATA_USAGE_PAIR,
  6. StructSize
  7. } from "../hacker/StructSize";
  8. import {Il2CppMetadataUsageList} from "./Il2CppMetadataUsageList";
  9. import {Il2CppMetadataUsagePair} from "./Il2CppMetadataUsagePair";
  10. import {Tabledefs} from "../tabledefs";
  11. export class Il2CppGlobalMetadataHeader extends NativeStruct {
  12. sanity() {
  13. return this.readU32().toString(16).toUpperCase();
  14. }
  15. version() {
  16. return this.add(0x4).readU32();
  17. }
  18. metadataUsagePairsCount() {
  19. return this.add(0xcc).readU32();
  20. }
  21. metadataUsagePairsOffset() {
  22. return this.add(0xc8).readU32();
  23. }
  24. metadataUsageListsOffset() {
  25. return this.add(0xc0).readU32();
  26. }
  27. exportedTypeDefinitionsOffset(){
  28. return this.add(256).readU32();
  29. }
  30. exportedTypeDefinitionsCount(){
  31. return this.add(260).readU32();
  32. }
  33. metadataOffset(globalMetadata, returnStructSize, sectionOffset, itemIndex) {
  34. // log("globalMetadata:" + globalMetadata + " size:" + returnStructSize + " offset:" + sectionOffset + " itemIndex:" + itemIndex);
  35. let number = returnStructSize * itemIndex;
  36. return globalMetadata.add(number).add(sectionOffset);
  37. }
  38. getEncodeIndexType(index){
  39. return ((index & 0xE0000000) >> 29);
  40. }
  41. getDecodedMethodIndex(index){
  42. return index & 0x1FFFFFFF;
  43. }
  44. }