сбой статуса для LdrLoadDll - PullRequest
2 голосов
/ 18 июня 2010

Я пытаюсь отработать функцию LdrLoadDll и мне не повезло с этим ... я также гуглил некоторые примеры, нет большого количества документации или правильного примера по этому поводу. Я знаю, что именно это делает .. Пожалуйста, проверьте код ниже.

//declaration function pointer for LdrLoadDll
typedef NTSTATUS (_stdcall*fp_LdrLoadDll)(
IN PWCHAR PathToFile OPTIONAL,
IN ULONG Flags OPTIONAL, 
IN PUNICODE_STRING ModuleFileName, 
OUT PHANDLE ModuleHandle ); 

//calling LdrLoadDll using getprocaddress
 HANDLE handle;
  HMODULE module = LoadLibrary(L"ntdll.dll");
    fp_LdrLoadDll loadDll;
    loadDll = (fp_LdrLoadDll)GetProcAddress(module,"LdrLoadDll");
    if(loadDll == NULL)
    {
        MessageBox(0,L"Not able to load the function",L"LdrLoadDll",&handle);
    }
    UNICODE_STRING input;
    input.Buffer = L"C:\\Desktop\\myDll.dll";
    input.Length = wcslen(input.Buffer)*2;
    input.MaximumLength = wcslen(input.Buffer) +2;

    NTSTATUS status = loadDll(NULL,LOAD_WITH_ALTERED_SEARCH_PATH,&input,0);

Когда я выполняю вышеизложенное, я не получаю никакого правильного статуса. Пожалуйста, помогите мне с этим.

1 Ответ

3 голосов
/ 21 июня 2010

Это сработало для меня, когда я инициализировал строку Unicode, как показано ниже

RtlInitUnicodeString(&input,L"myDll.dll");
...