Вопрос Не получается получить нужные данные из регистра EBX во время вызова бинарной функции

Начинающий
Статус
Оффлайн
Регистрация
5 Фев 2021
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Добрый день дорогие кулхацкеры, помогите пожалуйста реализовать до конца вызов игровой функции (нажимаем на монстра или НПС или МОБА называйте как хотите).

В общем, имеем функцию в игре
1.png
Которая принимает 7 аргументов вместе с указателем на объект, понимаем что будем использовать при ее вызове __thiscall или код:
Код:
    typedef int(__thiscall* _NPCCLICK)(int* _this, int value20, int packetId, int npcKey1_2, int zero, int object, int npcKet2_2);
    _NPCCLICK NpcCkick;
        NpcCkick((int*)(modBase + 0x3E3840), 0x20, 0x3, *uncnownKey, 0x0, player->objectId, player->NPC_KEY);

Но вот возникает проблема с регистром EBX, регистр указывает на статическую переменную переменную на которую я легко создал указатель и назвал
его "uncnownKey".

При вызове данной функции в игре если значение EBX совпало с "ключом" удачно происходит атака монстра и все счастливы, но потом ключ должен поменяться, а он этого не делает пока не тыкнешь на монстра любой кнопкой...
Поэтому если не выполнить вышеописанные действия(тыкнуть на монстра) просто не происходит не каких действий со стороны вызванной функции..

В общем я решил сначала посмотреть, что же записывает в переменную значение, подключил СЕ и получил результат
2.png

Появилась идея, сначала вызвать функцию которая записывает в переменную, потом мою, таким образом обновив данные из переменной, но вот запустив иду в этой функции ужаснулся:
3.png
ибо я не совсем понимаю как ее вызывать и что делать с ней :)
Отсюда у меня просьба о помощи, помогите пожалуйста разобраться как можно добиться обновления переменной программным путем.

Спасибо!
 
bibitka
Пользователь
Статус
Оффлайн
Регистрация
26 Июн 2020
Сообщения
133
Реакции[?]
66
Поинты[?]
0
Я не совсем понимаю, откуда вы берете регистр EBX . У вас все параметры( в thiscall) передаются через стек, указатель на объект передается через ECX, и EBX, если функция статическая. Так на какой же параметр функции может указывать регистр EBX ?
 
Начинающий
Статус
Оффлайн
Регистрация
5 Фев 2021
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Я не совсем понимаю, откуда вы берете регистр EBX . У вас все параметры( в thiscall) передаются через стек, указатель на объект передается через ECX, и EBX, если функция статическая. Так на какой же параметр функции может указывать регистр EBX ?
Спасибо вам за ответ!
обратите внимание на 1й скриншот там 7 параметров включая указатель на this
один из параметров передается через стек посредством push EBX
Код:
push dword ptr ss:[ebp-4]
push ext, portal.4c3840
push dword ptr ss:[ebp-8]
push 0
push ebx
push 3
push 20
там некий ID, ключ или что - то вроде
в сам EBX значение записывается где - то выше, если понадобится я скину код
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
если понадобится я скину код
Лучше скиньте сам бинарник (можно и в лс), так можно бесконечно разбираться что там нужно, проще среверсить (по скриншотам не понятно, как игра вычисляет ebx и как его сэмулировать, и ключ ли это вообще).
 
Сверху Снизу