Как вызвать статическую функцию-член статической библиотеки из процесса жертвы процесса dll-инъекции - PullRequest
0 голосов
/ 29 апреля 2019

Я успешно зацепил приложение жертвы с dll-инъекцией. Теперь мне нужно вызвать неэкспортированную одноэлементную функцию процесса жертвы. Возможно ли это, как бы я поступил?

Хотя у меня есть объектные файлы и т. Д. Процесса жертвы, я не могу перестроить / развернуть новые версии, поэтому я не могу просто создать функцию со связью экспорта.

Я пробовал код в процессе подключения:

#include "VictimSingleton.h"
//...
void SomeFuncInHook()
{
  VictimSingleton *vs = VictimSingleton::Get();
  vs->DoThing();
}

внутренне Get () реализован так:

VictimSingleton* VictimSingleton::Get()
{
  static VictimSingleton singleton;
  return &singleton;
}

Ожидаемый результат: VictimSingleton :: Get () возвращает тот же адрес при вызове из моего хука или процесса моей жертвы.

Фактический результат: Указатель, возвращаемый функцией Get, хотя и действителен, относится к другому VictimSingleton, чем тот, который использовался процессом жертвы.

Полагаю, это потому, что это две отдельные единицы перевода, поэтому при вызове из моего процесса ловушки создается другая версия синглтона.

...