Я написал программу для инъекций dll, которая работает просто отлично. Он загружает dll в удаленный процесс и вызывает некоторую функцию. Теперь я хочу передать аргумент этой функции. CreateRemoteThread имеет lpParameter для этого, но как получить этот переданный аргумент внутри dll, чтобы использовать его в функции?
Обновление :
Точка входа dll является общей:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
Dll содержит только одну функцию со следующим прототипом:
void TestFunction(const char* ua);
Код, который вызывает эту функцию:
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((void*)codecaveExecAddr), (LPVOID)argumentAddress, 0, NULL);
Как видите, я пытаюсь передать строку "test" внутри TestFunction. Но затем я проверяю аргумент ua внутри TestFunction, в которой содержится мусор.
Вот все файлы проекта:
http://pastebin.com/gh4SnhmV
http://pastebin.com/Sq7hpSVx
http://pastebin.com/dvgXpUYz
ОБНОВЛЕНИЕ 2
Должен ли TestFunction иметь какой-либо конкретный пропотип или я могу использовать любой, если в нем только один параметр типа LPVOID? Я не совсем понимаю. Может кто-нибудь дать мне пример того, как вызвать функцию введенной DLL с некоторым аргументом?