Неверный дескриптор внедрения dll в процесс с помощью CreateRemoteThread()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неверный дескриптор внедрения dll в процесс с помощью CreateRemoteThread()

Сообщение Anonymous »

У меня проблема с CreateRemoteThread(). Я провел последние 3 дня, пытаясь разобраться в этом, и схожу с ума.
Когда я использую функцию CreateRemoteThread(), функция возвращает NULL, и если я использую getLastError(), я получаю ошибку 6 (что означает неверный дескриптор). Я пытался внедрить свою собственную dll в процесс notepad.exe и получил эту ошибку, но внедрение не произошло. Чтобы получить дескриптор процесса, я использовал следующее => HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,processID);
Затем я попробовал следующее HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetCurrentPoccessID()); это то же самое, за исключением того, что dll внедряется в текущий исполняемый процесс, и это сработало. Я предполагаю, что это проблема с разрешением, но я отключил все антивирусы, включая защитника Windows. Я действительно хочу знать, что мешает мне выполнить инъекцию, поскольку все остальные, похоже, смогут выполнить инъекцию с использованием аналогичного кода. Я использую 64-битную систему Windows 11. найдите ниже код инъекции и код dll. Примечание.
1: .dll и .exe — это 64-разрядные файлы.
2: я запускаю их от имени администратора.
3: как я скомпилировал .dll x86_64-w64-mingw32-g++ -shared -o mydll.dll mydll.cpp
4: vs компилятор кода конфигурации:
{
"configurations": [
{
"name": "Win64",
"includePath": [
"${workspaceFolder}/**",
"c:/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\msys64\\mingw64\\bin\\gcc.exe",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}

[ОБНОВЛЕНИЕ] *Я создал процесс и скомпилировал его так же, как я скомпилировал injector.cpp, я смог внедрить его в процесс :D.. Итак, проблема в том, как я я соответствую .dll * вот сведения о моей системе: 64-разрядная операционная система, процессор на базе ARM
injection.cpp< /strong>

#include
#include

int main(int argc, char* argv[])
{if (argc < 2) {
printf("(--) usage: dll.exe
");
return EXIT_FAILURE;
}

DWORD PID = atoi(argv[1]);
// Path to the target process
const char* targetProcess = "C:\\Windows\\System32\\notepad.exe";

// Path to the DLL to inject
const char* dllPath = "C:\\Users\\fagner\\Desktop\\windowsM\\dll\\dlli2.dll";

// Load the target process
HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION | PROCESS_CREATE_THREAD, FALSE,PID);// if I replace process ID with GetCurrentProcessId() it works

if (hProcess == NULL)
{
std::cout

Подробнее здесь: https://stackoverflow.com/questions/761 ... motethread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»