UNPKG

frida-il2cpp-bridge-my

Version:

(my:Support IOS)Frida module to dump, manipulate and hijack any IL2CPP application at runtime with a high level of abstraction.

70 lines (69 loc) 2.97 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports._Il2CppImage = void 0; const decorator_cache_getter_1 = require("decorator-cache-getter"); const accessor_1 = require("../../utils/accessor"); const api_1 = require("../api"); const decorators_1 = require("../decorators"); const native_struct_1 = require("../native-struct"); const utils_1 = require("../utils"); const variables_1 = require("../variables"); const class_1 = require("./class"); const type_1 = require("./type"); let _Il2CppImage = class _Il2CppImage extends native_struct_1.NativeStruct { get classCount() { return api_1.Api._imageGetClassCount(this.handle); } get classStart() { return api_1.Api._imageGetClassStart(this.handle); } get classes() { const accessor = new accessor_1.Accessor(); if (variables_1.unityVersion.isLegacy) { const start = this.classStart; const end = start + this.classCount; const globalIndex = Memory.alloc(Process.pointerSize); globalIndex.add(type_1._Il2CppType.offsetOfTypeEnum).writeInt(0x20); for (let i = start; i < end; i++) { const klass = new class_1._Il2CppClass(api_1.Api._typeGetClassOrElementClass(globalIndex.writeInt(i))); accessor[klass.type.name] = klass; } } else { const end = this.classCount; for (let i = 0; i < end; i++) { const klass = new class_1._Il2CppClass(api_1.Api._imageGetClass(this.handle, i)); accessor[klass.type.name] = klass; } } return accessor; } get name() { return api_1.Api._imageGetName(this.handle); } getClassFromName(namespace, name) { return utils_1.getOrNull(api_1.Api._classFromName(this.handle, namespace, name), class_1._Il2CppClass); } }; __decorate([ decorator_cache_getter_1.cache ], _Il2CppImage.prototype, "classCount", null); __decorate([ decorator_cache_getter_1.cache ], _Il2CppImage.prototype, "classStart", null); __decorate([ decorator_cache_getter_1.cache ], _Il2CppImage.prototype, "classes", null); __decorate([ decorator_cache_getter_1.cache ], _Il2CppImage.prototype, "name", null); _Il2CppImage = __decorate([ decorators_1.nonNullHandle ], _Il2CppImage); exports._Il2CppImage = _Il2CppImage;