Я пытаюсь использовать инъекцию dll, чтобы перехватить вызов Direct3DCreate8
из моего приложения, чтобы получить дескриптор устройства Direct3d и нарисовать оверлей на экране, который он представляет. Вызов этого API происходит сразу после выполнения приложения, которое, если я правильно понимаю, делает ненужным встраивание dll в запущенный процесс, поскольку вызов API, который был после этого, уже произошел, когда я вставляю dll. Правильно ли это предположение? Если да, то как можно вставить DLL во время выполнения процесса, чтобы поймать требуемый вызов API?DLL-инъекция до выполнения процесса
EDIT: Я знаю общесистемные апи-крючки, но было бы неплохо услышать «локальное» решение этой проблемы.
EDIT 2: Забыл упомянуть, заменив .dll в папке приложения не имеет смысла, поскольку приложение ищет .dll (d3d8.dll в моем случае) в System32/Syswow64 каталогов.
(Не полный ответ, поэтому я отправляю его как комментарий). Посмотрите на API отладчика: http://msdn.microsoft.com/en-us/library/ms809754.aspx - процессы начало отладки будет приостановлено, поэтому вы можете вставить свою DLL, затем отказаться от нее, а затем прекратить ее отладку. (Несмотря на то, что ваша программа на самом деле не отладчик, она может использовать API отладчика) – immibis