В настоящее время я работаю над объединением некоторых объявлений для функций ntdll из различных файлов exploit-db, чтобы создать кейлоггер (в образовательных целях). Я пробовал искать здесь и общую сеть. Я не мог найти ничего подобного достаточно, чтобы понять, как его использовать, чтобы исправить мою проблему. Прошу прощения, если есть дубликат, я не мог найти ничего связанного.Ошибки компилятора с typedef C++
Я помещаю их в файл заголовка, и, пытаясь их скомпилировать, я получаю всевозможные ошибки, связанные с typedefs внутри заголовка, я получаю сообщения об ошибках с указанием decltype, и я признаю, что я не могу показаться понимаете это вообще. Я никогда не сталкивался с заголовочным материалом или с decltype, я искал вокруг, но все еще не могу понять. Ошибки возникают с этим:
typedef (NTSTATUS) (WINAPI *LPFUN_NtCreateThreadEx)
(
OUT PHANDLE hThread,
IN ACCESS_MASK DesiredAccess,
IN LPVOID ObjectAttributes,
IN HANDLE ProcessHandle,
IN LPTHREAD_START_ROUTINE lpStartAddress,
IN LPVOID lpParameter,
IN BOOL CreateSuspended,
IN DWORD StackZeroBits,
IN DWORD SizeOfStackCommit,
IN DWORD SizeOfStackReserve,
OUT LPVOID lpBytesBuffer
);
typedef NTSTATUS(NTAPI *lNtAllocVirtMem)(
IN HANDLE ProcessHandle,
IN PVOID *BaseAddress,
IN PULONG ZeroBits,
IN PSIZE_T RegionSize,
IN ULONG AllocationType,
IN ULONG Protect
);
Другая ошибка в main.cpp является: (жаль о длинной линии)
lNtAllocVirtMem pNtAllocateVirtualMemory=(lNtAllocVirtMem)GetProcAddress(LoadLibaryA("ntdll.dll"),"NtAllocateVirtualMemory");
Мои ошибки (я двойником обоих):
error: expected primary-expression before '__attribute__'
error: typedef 'NTSTATUS' is initialized (use decltype instead)
Я хотел бы знать, как их решить (как я планирую добавить больше), и что более важно, как я могу убедиться, что я не получу их здесь?
Вы компилируете в gcc? Это код, специфичный для компилятора, поэтому вам, вероятно, придется искать спецификации для вашего компилятора при правильном использовании. – Nonanon
Поиск в Google показывает, что в основном «NTSTATUS» является [Microsoftese для «длинного»] (https://msdn.microsoft.com/en-us/library/cc230357.aspx). Таким образом, typedef не имеет смысла. Неясно, что именно вы намерены использовать в псевдониме, используя typedef. Если 'NTSTATUS' является возвращаемым значением из функции, оно не должно быть в скобках. Подробнее Googling показывает, что «WINAPI» [является Microsoftese для '__stdcall'] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751 (v = vs.85) .aspx) - компилятор ключевое слово. Неясно, должно ли оно быть до или после '*'. –
@Nonanon Я использую Mingw с версией gcc 4.9 – Semaphore