Rangechecks доступ вне диапазона - C ++ - PullRequest
1 голос
/ 16 июня 2020

Итак, я пытаюсь внедрить отладочную dll в свой тестовый процесс, который просто говорит «привет, мир» после успешного внедрения:

PS: Я использую C ++ / CLI для запуска моего сценария C ++ из интерфейс.

hello.dll

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <windows.h>

BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  reason,
    LPVOID lpReserved
)
{
    if (reason == DLL_PROCESS_ATTACH)
        MessageBox(NULL, L"HELLO WORLD", L"INFO", NULL);
    return TRUE;
}

Ниже приведена часть моего кода, которая принимает эту dll, выделяет память в целевом процессе, записывает путь к dll последнему отведено место. Затем вызывается LoadLibraryA для запуска DLL из пути. Однако, когда я присоединяю свой отладчик vstudio к целевому процессу при внедрении библиотеки DLL, он вылетает при выполнении функции LoadLibraryA с ошибкой:

ntldll.dll rangechecks out of range access

PSS: стек вызовов просто содержит функции ntdll.dll

Код внедрения :

char* dll_path = "C:/some_path/hello.dll";
HANDLE h_process = OpenProcess(PROCESS_ALL_ACCESS, NULL, debug_app_id);
HANDLE allocatedMemory = VirtualAllocEx(h_process, 0, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(h_process, allocatedMemory, dll_path, strlen(dll_path) + 1, nullptr);
HANDLE h_thread = CreateRemoteThread(h_process, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, allocatedMemory, 0, 0);//crashes here
cout << "Success!" << endl;
cout << endl;
cout << "Cleaning..." << endl;
CloseHandle(h_process);//dropping process handle
VirtualFreeEx(h_process, allocatedMemory, NULL, MEM_RELEASE);//release pointed to memory

Есть идеи?

ИЗМЕНИТЬ : когда я пытаюсь выделить память, я получаю System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...