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
JavaScript
;
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;