Перейти к содержанию

Перехват фунции


Рекомендуемые сообщения

Написал для проверки вот такую программу:

Спойлер

#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 программу крашит...

 

Изменено пользователем Xhayla
Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

Это не указатель, а ссылка на переменную.

Сейчас скриншот, к сожалению, уже недоступны, но почему хук ставится на sub_E713A2?
Судя по коду getSerial вызывается только в main. sub_E713A2 == main?

Кроме того, стоит, конечно же, еще учитывать соглашение о вызове функции — может быть причиной краша.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.