MCPcopy Create free account
hub / github.com/axhlzy/Il2CppHookScripts / classLoaderManager

Class classLoaderManager

Il2cppHook/_Ufunc.js:7481–7544  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7479exports.iterClassLoader = exports.listClassLoader = void 0;
7480const formart_1 = require("../utils/formart");
7481class classLoaderManager {
7482 static iterClassLoader = (callback, log = false) => {
7483 Java.perform(() => {
7484 Java.enumerateClassLoaders({
7485 onMatch: function (loader) {
7486 if (log)
7487 LOGD('classLoader' + loader.toString());
7488 if (loader.toString().indexOf('dalvik.system.DexClassLoader') > -1) {
7489 if (callback != null)
7490 interCall(loader, callback);
7491 }
7492 else {
7493 if (callback != null)
7494 interCall(loader, callback);
7495 }
7496 }, onComplete: function () { }
7497 });
7498 });
7499 function interCall(loader, interCallBack) {
7500 Java.classFactory.loader = loader;
7501 interCallBack(loader);
7502 }
7503 };
7504 static loaders = new Array();
7505 static listClassLoader = (formart = true, needLog = true) => {
7506 if (!needLog && classLoaderManager.loaders.length === 0) {
7507 fillCacle();
7508 return;
7509 }
7510 if (!formart) {
7511 Java.perform(() => classLoaderManager.iterClassLoader(() => { }, true));
7512 }
7513 else {
7514 fillCacle();
7515 let classLoaderList = ["java.lang.BootClassLoader", "dalvik.system.DexClassLoader", "dalvik.system.PathClassLoader", "dalvik.system.InMemoryDexClassLoader"];
7516 classLoaderList.forEach((classLoaderName) => {
7517 formart_1.formartClass.printTitile(classLoaderName);
7518 this.loaders.forEach((loader) => {
7519 if (loader.toString().indexOf(classLoaderName) > -1)
7520 LOGD(' [' + classLoaderManager.loaders.indexOf(loader) + '] ' + loader.toString());
7521 });
7522 });
7523 }
7524 function fillCacle() {
7525 if (classLoaderManager.loaders.length !== 0)
7526 return;
7527 Java.perform(() => classLoaderManager.iterClassLoader((loader) => {
7528 if (!classLoaderManager.loaders.includes(loader))
7529 classLoaderManager.loaders.push(loader);
7530 }, false));
7531 }
7532 };
7533 static getClassLoaderByDescriptor = (descriptor) => {
7534 let ret = null;
7535 classLoaderManager.loaders.forEach((loader) => {
7536 if (loader.toString().indexOf(descriptor) > -1)
7537 ret = loader;
7538 });

Callers

nothing calls this directly

Calls 3

performMethod · 0.80
LOGDFunction · 0.70
toStringMethod · 0.65

Tested by

no test coverage detected