Читайте о теории DLL инъекций здесь: http://en.wikipedia.org/wiki/DLL_injection
Тем не менее, я предоставлю вам фрагмент DLL инъекции здесь: http://www.dreamincode.net/code/snippet407.htm
Это довольно легко сделатьтипы вещей, когда вы находитесь в памяти внешнего приложения, после инъекции вы также можете быть частью процесса.
Есть что-то, называемое обходом, и я считаю, что вы ищете, он просто перехватывает функцию, и когда этот процесс вызывает ее, вместо этого он выполняет вашу собственную функцию.(Чтобы убедиться, что это не дает сбоя, вызовите функцию в конце вашей функции)
Так что, если вы хотите написать свою собственную функцию через CreateRegKeyEx
(http://msdn.microsoft.com/en-us/library/ms724844%28v=vs.85%29.aspx)
Это может выглядеть примерно так:
LONG WINAPI myRegCreateKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
{
//check for suspicious keys being made via the parameters
RegCreateKeyEx(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition);
}
Вы можете получить очень хорошо написанную обходную библиотеку DetourXS здесь: http://www.gamedeception.net/threads/10649-DetourXS
Вот его пример кода, как установить обходиспользуя его:
#include <detourxs.h>
typedef DWORD (WINAPI* tGetTickCount)(void);
tGetTickCount oGetTickCount;
DWORD WINAPI hGetTickCount(void)
{
printf("GetTickCount hooked!");
return oGetTickCount();
}
// To create the detour
oGetTickCount = (tGetTickCount) DetourCreate("kernel32.dll", "GetTickCount", hGetTickCount, DETOUR_TYPE_JMP);
// ...Or an address
oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP);
// ...You can also specify the detour len
oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP, 5);
// To remove the detour
DetourRemove(oGetTickCount);
И если вы не можете сказать, что этот фрагмент перехватывает GetTickCount () и всякий раз, когда вызывается функция, он пишет «GetTickCount hooked!» - тогда он выполняет функцию GetTickCount:это было предназначено.
Извините за то, что так разбросаны информацией, но я надеюсь, что это поможет. :) - Я понимаю, что это старый вопрос.-