C++ Вопрос E0728 использование имени пространства имен не допускается

Начинающий
Статус
Оффлайн
Регистрация
9 Дек 2018
Сообщения
43
Реакции[?]
2
Поинты[?]
0
есть код, но почему то выдает ошибку:

C++:
NTSTATUS zerohook::hook_handler(PVOID called_param)
{
    NULL_MEMORY* instructions = (NULL_MEMORY*)called_param;

    if (instructions->req_base != FALSE)
    {
        ANSI_STRING AS;
        UNICODE_STRING ModuleName;


        RtlInitAnsiString(&AS, instructions->module_name);
        RtlAnsiStringToUnicodeString(&ModuleName, &AS, TRUE);

        PEPROCESS process;
        PsLookupProcessByProcessId((HANDLE)instructions->pid, &process);
        ULONG64 base_address64 = NULL;
        base_address64 = zerohook;
    }
}
ошибка в строке 17: zerohook
 
Начинающий
Статус
Оффлайн
Регистрация
9 Дек 2018
Сообщения
43
Реакции[?]
2
Поинты[?]
0
Stop Staring At the Shadows
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
518
Реакции[?]
497
Поинты[?]
86K
делал по видосу англ язычному, у типа там все так же, но ошибки нет:Посмотреть вложение 240193

как можно пофиксить?
просто быть не может что-бы этот код у него работал, значит он внутри zerohook взял какой-то ULONG64 аргумент, который заранее инициализировал в другом участке кода (иначе он просто 0 передал в 0).

C++:
//UPD: ошибся в названии неймспейса
namespace zerohook {
    ULONG64 getAddr = NULL;
    NTSTATUS hook_handler(PVOID called_param);
}

NTSTATUS zerohook::hook_handler(PVOID called_param)
{
    NULL_MEMORY* instructions = (NULL_MEMORY*)called_param;

    if (instructions->req_base != FALSE)
    {
        ANSI_STRING AS;
        UNICODE_STRING ModuleName;


        RtlInitAnsiString(&AS, instructions->module_name);
        RtlAnsiStringToUnicodeString(&ModuleName, &AS, TRUE);

        PEPROCESS process;
        PsLookupProcessByProcessId((HANDLE)instructions->pid, &process);
        ULONG64 base_address64 = NULL;
        base_address64 = zerohook::getAddr; // хз чё он может брать вообще (можно и без обращения к неймспейсу, сделал так что-бы было нагляднее)
    }
}
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
9 Дек 2018
Сообщения
43
Реакции[?]
2
Поинты[?]
0
просто быть не может что-бы этот код у него работал, значит он внутри nullhook взял какой-то ULONG64 аргумент, который заранее инициализировал в другом участке кода (иначе он просто 0 передал в 0).

C++:
namespace nullhook {
    ULONG64 getAddr;
    NTSTATUS hook_handler(PVOID called_param);
}

NTSTATUS zerohook::hook_handler(PVOID called_param)
{
    NULL_MEMORY* instructions = (NULL_MEMORY*)called_param;

    if (instructions->req_base != FALSE)
    {
        ANSI_STRING AS;
        UNICODE_STRING ModuleName;


        RtlInitAnsiString(&AS, instructions->module_name);
        RtlAnsiStringToUnicodeString(&ModuleName, &AS, TRUE);

        PEPROCESS process;
        PsLookupProcessByProcessId((HANDLE)instructions->pid, &process);
        ULONG64 base_address64 = NULL;
        base_address64 = zerohook::getAddr; // хз чё он может брать вообще (можно и без обращения к неймспейсу, сделал так что-бы было нагляднее)
    }
}
ну вообще он как дописал(на скрине который скинул) сразу резкий переход на другую часть кода
 
Сверху Снизу