Xhayla Опубликовано 14 апреля, 2021 Поделиться Опубликовано 14 апреля, 2021 (изменено) Написал для проверки вот такую программу: Спойлер #include <iostream> void getSerial(int &buff) { buff = 100; } int result; int main() { res: getSerial(result); std::cout << result << std::endl; getchar(); goto res; } Которая при нажатии на Enter выводит в консоль значение из переменной "result". Пытаюсь сделать примерно тоже самое, что делалось в уроке - "04. Продвинутые инструменты IDA и Ghidra. Перехват сетевых пакетов изнутри игры". Только перехватываю функцию GetSerial, которая по указателю на переменную, вписывает в нее значение - 100. Дальше смотрю псевдокод: main -> https://ibb.co/DRfbWp2 Call на функцию getSerial: https://ibb.co/K74nVZg - вижу что функция sub_E713A2 вызывает getSerial Cама функция getSerial(sub_E71890) : https://ibb.co/ydtQ6Lf Ставю хук на фунцию - sub_E713A2, которая вызывает getSerial - https://ibb.co/r2VGpGF Пытаюсь сделать так, чтобы в итоге getSerial возвращала не 100, а к примеру 111. После инжекта DLL программу крашит... Изменено 14 апреля, 2021 пользователем Xhayla Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 Это не указатель, а ссылка на переменную. Сейчас скриншот, к сожалению, уже недоступны, но почему хук ставится на sub_E713A2? Судя по коду getSerial вызывается только в main. sub_E713A2 == main? Кроме того, стоит, конечно же, еще учитывать соглашение о вызове функции — может быть причиной краша. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения