Help! How to Filter Out Specific Array Values in Function Parameters

Hi everyone,

I’m working with a function inside the AlphaSystem.Configuration namespace, specifically ModuleUtils.RetrieveActiveModules. I want to filter out specific values from the modules array (which is an array of ModuleTypes enum) before returning the modified array.

Here’s the method signature:

C#:
// Namespace: AlphaSystem.Configuration
public static class ModuleUtils
{
    public static IEnumerable<SignedContainer<ModuleConfig>> RetrieveActiveModules(IDataProvider provider, ModuleTypes[] modules) { }
}

// Namespace: AlphaSystem.Configuration
public enum ModuleTypes
{
    public int value__;
    public const ModuleTypes Undefined = 0;
    public const ModuleTypes Exploration = 1;
    public const ModuleTypes Discovery = 2;
    public const ModuleTypes Conquest = 3;
    public const ModuleTypes TreasureHunt = 12;
    public const ModuleTypes RewardTracker = 13;
    public const ModuleTypes MysteryBox = 14;
    public const ModuleTypes AllianceEvents = 15;
    public const ModuleTypes SecurityProtocol = 301;
    public const ModuleTypes TransactionValidation = 302;
    public const ModuleTypes ItemGeneration = 303;
    public const ModuleTypes OffsetCalculation = 304;
    public const ModuleTypes SpecialFormulas = 305;
    public const ModuleTypes LegacySupport = 350;
    public const ModuleTypes HistoricalData = 400;
    public const ModuleTypes NewsSync = 401;
    public const ModuleTypes ActionLogger = 402;
    public const ModuleTypes OptimizedCaching = 600;
}

What I want to do is filter out specific values from the ModuleTypes[] modules array. Specifically, I want to remove ModuleTypes.MysteryBox and ModuleTypes.AllianceEvents if they are present in the array before returning the modified list.

So far, I’ve hooked the RetrieveActiveModules function. I've proven the concept using Frida but I’m not sure how to integrate this into my mod menu (im using LGL mod menu 3.2). I would appreciate any guidance or examples on how to implement this filtering logic within the mod menu.

C++:
void (*original_RetrieveActiveModules)(void *provider, ModuleTypes* modules);
void hooked_RetrieveActiveModules(void *provider, ModuleTypes* modules){
    LOGI("RetrieveActiveModules called");
   
    // To implement array filter and return modified 'modules' array
   
    return original_RetrieveActiveModules(provider, modules);
}

HOOK_LIB("libil2cpp.so", "0x87DE748", hooked_RetrieveActiveModules, original_RetrieveActiveModules);

Has anyone worked with similar cases, or could provide advice on the next steps?

Thanks a lot in advance!
 
Last edited:
Back
Top Bottom