Я знаю, как внедрить DLL в работающий процесс, а также как использовать функции, используемые внутри процесса, например,
void__stdcall remoteMethod(unsigned short id)
{
typedef void (__stdcall *pFunctionAddress)(unsigned short);
pFunctionAddress pMyFunction = (pFunctionAddress)(0xCAFEBABE);
pMyFunction(id);
}
Теперь я хочу добавить sleep () в существующий метод в запущенном процессе - это основной цикл программы, который не останавливается ни на секунду и использует всю вычислительную мощность.
Я знаю, что с такими фреймворками, как обходы, я мог бы создать функцию батута, которая вызывает мою функцию, а затем оригинальную - однако моя проблема в том, что цикл while (1) находится где-то внутри функции внешнего процесса. Так что я знаю смещение, где начинается цикл - и после этого я хотел бы сначала вызвать sleep (), а затем продолжить с обычным маршрутом цикла.
Единственная альтернатива, которую я видел до сих пор, - это двоичное редактирование программы, но это не очень хорошее решение.
Есть предложения? Спасибо