C ++ - внедрение DLL и вызов функции

0

Я долго пытаюсь найти ответ на свой вопрос.

У меня есть игровая DLL и программа.

Я DLL У меня есть функция, которая что-то изменяет в игре. (если DLL вводится в игру). Программа - мой инжектор.

Мой вопрос, после инъекции, как можно вручную вызвать функцию в DLL?

Теперь эта функция вызывается, когда она присоединена к игре, но как вызвать эту функцию из инжектора?

  • 0
    Конечно, вам не нужны все эти заглавные буквы.
  • 0
    Я сделал что-то подобное давным-давно, но я не могу вспомнить детали. Разве вы не можете создать новый поток в другом процессе и заставить этот поток вызывать функцию? + Посмотрите на это: msdn.microsoft.com/en-us/library/ms682437%28VS.85%29.aspx
Теги:
dll

3 ответа

0

Чтобы вызвать функцию, вам нужен код, который выполняется в целевом процессе. Это игра, но вы хотите вызвать функцию из вашего инжектора, другой процесс. У вас уже есть код в целевом процессе, DLL, который вы ввели. Итак, запустите вложенную DLL для вызова функции. Некоторые способы достижения этого:

  1. Создайте еще один удаленный поток в целевом процессе, который вызывает функцию, определенную в DLL. Это может делать то, что ему нравится, в контексте целевого процесса.
  2. Используйте некоторый механизм IPC (например, именованные каналы, сокеты и т.д.), Чтобы попросить внедренную DLL выполнить действие.
  • 0
    Пожалуйста, дайте мне пример кода, потому что в теории я ничего не понимаю; P
  • 0
    Не могу сделать, извини. Это ваша работа писать код, а не моя. Вы уже написали код для внедрения DLL, поэтому вы должны знать, как это сделать. Или ты все это вырезал и вставил?
0

Да, вы можете создать удаленный поток в текущем процессе, и в этом потоке вы проделаете свой путь к этой функции, о которой вы говорите.

  • 0
    «Пробейся» - нет, не совсем. Вам лучше указать функцию, которую вы хотите запустить в качестве точки входа потока, потому что в цели нет кода, который будет вызывать функцию за вас.
  • 0
    Можете ли вы дать мне пример? Запустить функцию в DLL с 2 аргументами (int, char *) во введенной программе из инжектора?
Показать ещё 2 комментария
-1

Вы должны загрузить символ (функцию) из dll в свою программу.

Этот символ будет указателем функции, который вы можете вызвать. Существуют значительные различия между операционными системами, поэтому я бы поискал "функцию вызова из dll", чтобы получить пример для вашей ОС.

  • 0
    Указатель функции недопустим в адресном пространстве инжектора, и вызов указателя функции будет выполняться внутри инжектора, а не в цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню