Help! Hook not working?!

HaloKokaine

Platinian
Original poster
Jan 17, 2022
27
389
48
25
Brazil - RJ
Can anyone help me? I'm trying to make some hooks, but they don't seem to be working?! As if it hadn't been applied...

I'm definitely doing something wrong, but in fact I'm not finding the problem and I've been stuck on this for a few...

The src here.
 
Last edited:

HaloKokaine

Platinian
Original poster
Jan 17, 2022
27
389
48
25
Brazil - RJ
Would be helpful if you could actually show your hooks/code
In The hack_thread:
C++:
MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", canUseSkinAddr), (void *) CanUseSkin,
        (void **) &oldCanUseSkin);
       
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", bFreeLeaderAddr), (void *) BFreeLeaderSkin,
        (void **) &oldBFreeLeaderSkin);
       
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", isHaveSkinAdrr), (void *) IsHaveSkin,
        (void **) &oldIsHaveSkin);
   
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", isHaveSkinForeverAddr), (void *) IsHaveSkinForever,
        (void **) &oldIsHaveSkinForever);
   
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", isForbidARSkinAdrr), (void *) IsForbidARSkin,
        (void **) &oldIsForbidARSkin);
   
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", getLeaderSkinBForbidAddr), (void *) GetLeaderSkinBForbid,
        (void **) &oldGetLeaderSkinBForbid);
   
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", isForbidSkinAddr), (void *) IsForbidSkin,
        (void **) &oldIsForbidSkin);
   
    /* BYPASS FORCE CRASH (BLACK SCREEN) */
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", 0xF65D8C), (void *) ForceCrash,
        (void **) &oldForceCrash);
       
    /* BYPASS ANTICHEAT INTEGRITY CHECKER. */
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", 0x624EB5C), (void *) GetGenuine,
        (void **) &oldGetGenuine);
       
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", 0x624EBA4), (void *) GenuineCheckAvailable,
        (void **) &oldGenuineCheckAvailable);
       
    MSHookFunction((void *) getAbsoluteAddress("il2cpp.so", 0x624DFF0), (void *) HasProLicense,
        (void **) &oldHasProLicense);
       
    LOGD("Hooks Initializeds!");
Hook functions:
C++:
uintptr_t canUseSkinAddr = 0x1AF4AC8;
bool (*oldCanUseSkin)(void *instance, int *heroId);
bool CanUseSkin(void *instance, int *heroId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return true;
        }
    }
   
    heroId_ = (int)heroId;
   
    return oldCanUseSkin(instance, heroId);
}

uintptr_t bFreeLeaderAddr = 0x1AE6FD0;
bool (*oldBFreeLeaderSkin)(void *instance, int *leaderId);
bool BFreeLeaderSkin(void *instance, int *leaderId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return true;
        }
    }
   
    skinId_ = (int)leaderId;
           
    return oldBFreeLeaderSkin(instance, leaderId);
}

uintptr_t isHaveSkinAdrr = 0x1AA7BD8;
bool (*oldIsHaveSkin)(void *instance, int *skinId);
bool IsHaveSkin(void *instance, int *skinId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return true;
        }
    }
   
    skinId_ = (int)skinId;
           
    return oldIsHaveSkin(instance, skinId);
}

uintptr_t isHaveSkinForeverAddr = 0x1ABB9E8;
bool (*oldIsHaveSkinForever)(void *instance, int *skinId);
bool IsHaveSkinForever(void *instance, int *skinId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return true;
        }
    }
   
    skinId_ = (int)skinId;
           
    return oldIsHaveSkinForever(instance, skinId);
}

uintptr_t isForbidARSkinAdrr = 0x1ABD068;
bool (*oldIsForbidARSkin)(void *instance, int *skinId);
bool IsForbidARSkin(void *instance, int *skinId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return false;
        }
    }
   
    skinId_ = (int)skinId;
           
    return oldIsForbidARSkin(instance, skinId);
}

uintptr_t getLeaderSkinBForbidAddr = 0x1AD22D8;
bool (*oldGetLeaderSkinBForbid)(void *instance, int *skinId);
bool GetLeaderSkinBForbid(void *instance, int *skinId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return false;
        }
    }
   
    skinId_ = (int)skinId;
           
    return oldGetLeaderSkinBForbid(instance, skinId);
}

uintptr_t isForbidSkinAddr = 0x1AD10D4;
bool (*oldIsForbidSkin)(void *instance, int *skinId);
bool IsForbidSkin(void *instance, int *skinId) {
    if (instance != NULL) {
        if (unlock_skins) {
            return false;
        }
    }
   
    skinId_ = (int)skinId;
           
    return oldIsForbidSkin(instance, skinId);
}

/* BYPASS FORCE CRASH (BLACK SCREEN */
void (*oldForceCrash)(void *instance, int *mode);
void ForceCrash(void *instance, int *mode) {
    return;
}

/* BYPASS ANTICHEAT INTEGRITY CHECKER. */
bool (*oldGetGenuine)(void *instance);
bool GetGenuine(void *instance) {
    return true;
}

bool (*oldGenuineCheckAvailable)(void *instance);
bool GenuineCheckAvailable(void *instance) {
    return true;
}

bool (*oldHasProLicense)(void *instance);
bool HasProLicense(void *instance) {
    return true;
}
But, in fact, I think that directly seeing the source code that is linked there, it will be easier.

I don't know if this makes any difference, but it's for the Mobile Legends game.