Проблема в вашей цели.Вы загрузили Kernel32
, отлично, но вы не сообщили целевому процессу, где находится адрес функции.Я предполагаю, что вы внедрили сегмент кода из вашего хост-процесса, поэтому не разрешили таблицу импорта для вашего внедрения в целевой процесс, как вы это сделали бы с внедрением DLL.
Вы можете вызвать CreateThread
из введенной функцииоднако сначала вам нужно загрузить его адрес!
typedef DATATYPE_OF_CREATETHREAD (__stdcall *MyCreateThread)(PARAMS_OF_CREATETHREAD);
MyCreateThread _MyCreateThread;
_MyCreateThread = (MyCreateThread)GetProcAddress("kernel32.dll", "CreateThread");
_MyCreateThread(PARAMS_TO_PASS); // CreateThread, with it's address loaded in memory of your injected code segment/function
Как и в случае с ^, вы сможете вызывать CreateThread
из введенной вами функции.
PS Я не запоминаюпараметры createthread имеет, но это было написано на месте.
Пожалуйста:)