MShook Android нужна помощь с "ключом"

Sbenny.com доверяют 1,335,228 XNUMX XNUMX счастливых пользователей с 2014 года.
Зарегистрируйтесь

диноид

Слава Украины
Участник 2 лет
Что такое «ключ», значение сразу после смещения в obfuscate_key. Где мне его найти? У меня уже есть смещение и размер метода.
Код:
MSHookFunction((void *) getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE_KEY("0x1234567",'a')))
Что мне нужно вставить в obfuscate_key вместо 'a' ...
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Это похоже на замок, который вы создаете, поэтому вы можете решить, какой ключ указать. Вы можете использовать любой персонаж.
 

диноид

Слава Украины
Участник 2 лет
Я успешно внедрил LGL Меню MOD в игру, но когда я использую Toggle, ничего не происходит. Уже взглянул на logcat, он говорит, что логическое значение изменилось с 0 на 1, но функция ничего не сделала.
Крючок:
C ++:
MSHookFunction((void *) getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE_KEY("0x1231231",'-'))), (void *) GetGold, (void **) &org_GetGold); //targetLib was set, the key and offset are illustrative
Метод:
Код:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        if(GoldToggle){
            return 999999999;
        }
    }
    return org_GetGold(instance);
}
Используемый переключатель:
Код:
OBFUSCATE("0_Toggle_Infinite Gold"),
Переключатель (где может быть ошибка):
Код:
switch (featNum) {
        case 0:
            GoldToggle = boolean;
            if (GoldToggle) {
                LOGI(OBFUSCATE("On"));
            } else {
                LOGI(OBFUSCATE("Off"));
            }
            break;
Я не уверен, что проблема в переключателе, если я должен вызвать функцию или что-то в этом роде ...
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Вы пытались заработать немного золота или потратить после включения Toggle?
 

диноид

Слава Украины
Участник 2 лет
Вы пытались заработать немного золота или потратить после включения Toggle?
Я пробовал активировать его перед запуском игры и до того, как заработать валюту. В любом случае ничего не происходит.
Я уже модифицировал эту игру с помощью hexpatching, поэтому я уверен, что она должна работать ...
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Я пробовал активировать его перед запуском игры и до того, как заработать валюту. В любом случае ничего не происходит.
Я уже модифицировал эту игру с помощью hexpatching, поэтому я уверен, что она должна работать ...
С hexpatching игра модифицируется, когда игра открыта, верно?
Вы можете открыть настройки меню LGL и включить Save Pref. Затем включите тумблер и перезапустите игру.
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Или попробуйте удалить переключатель и сразу вернуться.
C ++:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        return 999999999;
    }
    return org_GetGold(instance);
}
 

диноид

Слава Украины
Участник 2 лет
С hexpatching игра модифицируется, когда игра открыта, верно?
Вы можете открыть настройки меню LGL и включить Save Pref. Затем включите тумблер и перезапустите игру.
Я протестирую вот так. Мне было интересно, могу ли я вместо модификации "getGold" модифицировать "setGold". Таким образом, значение изменится, как только я активирую опцию. Это правильно?

Изменить: даже если параметр сохранен и активирован с самого начала, стоимость золота вообще не изменится ...
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Я протестирую вот так. Мне было интересно, могу ли я вместо модификации "getGold" модифицировать "setGold". Таким образом, значение изменится, как только я активирую опцию. Это правильно?
Сеттеры недействительны и ничего не возвращают. Вам нужно сначала научиться ловить крючки, прежде чем переходить к сеттерам или другим людям.
 

диноид

Слава Украины
Участник 2 лет
Или попробуйте удалить переключатель и сразу вернуться.
C ++:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        return 999999999;
    }
    return org_GetGold(instance);
}
Как это?
Код:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        //if(GoldToggle){
            return 999999999;
        //}
    }
    return org_GetGold(instance);
}
 

диноид

Слава Украины
Участник 2 лет
Tsc, только что протестировал его, и никаких изменений снова, с проверкой переключения или без нее.
Может я что-то упускаю.
 

диноид

Слава Украины
Участник 2 лет
Я попытался изменить идентификатор переключателя, но все равно безрезультатно. Я попробую модифицировать, используя kittymemory или что-то в этом роде. Я очень старался заставить его работать с mshook lul
 

диноид

Слава Украины
Участник 2 лет
Я попытался изменить идентификатор переключателя, но все равно безрезультатно. Я попробую модифицировать, используя kittymemory или что-то в этом роде. Я очень старался заставить его работать с mshook lul
Итак, я поместил некоторый логарифм в свой метод getGold, чтобы узнать, была ли там ошибка, и оказалось, что он показал "Instance Is Null"

C ++:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        if(GoldToggle){
            LOGI(OBFUSCATE("Modded value"));
            return 999999999;
        }
    }
    LOGI(OBFUSCATE("Instance is null"));
    return org_GetGold(instance);
}
Это связано с моим MSHook?
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Итак, я поместил некоторый логарифм в свой метод getGold, чтобы узнать, была ли там ошибка, и оказалось, что он показал "Instance Is Null"

C ++:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if (instance != NULL) {
        if(GoldToggle){
            LOGI(OBFUSCATE("Modded value"));
            return 999999999;
        }
    }
    LOGI(OBFUSCATE("Instance is null"));
    return org_GetGold(instance);
}
Это связано с моим MSHook?
Может мне показать функцию на DnSpy или Dump.cs?
 

Гуров

Дмитрий Петренко
✌️ Команда сообщества
Участник 5 лет
Или, поскольку вы не используете экземпляр, вы можете использовать как ...
C ++:
int (*org_GetGold)(void *instance);
int GetGold(void *instance) {
    if(GoldToggle){
       LOGI(OBFUSCATE("Modded value"));
       return 999999999;
       }
    return org_GetGold(instance);
}
 
Топовое