#ifndef GET_SYSCALL64_IDS_H #define GET_SYSCALL64_IDS_H /** \file */ /** \brief Definition of the hashs of APIs and the error value INVALID_SYSCALL_ID */ enum SYSCALL_IDS { // Files NTOPENFILE = 0xC29C5019, //! Supported by get_basic_syscall_ID NTCREATEFILE = 0x15A5ECDB, //! Supported by get_basic_syscall_ID NTREADFILE = 0x2E979AE3, //! Supported by get_basic_syscall_ID NTCLOSE = 0x8B8E133D, //! Supported by get_basic_syscall_ID NTWRITEFILE = 0xD69326B2, // Mutexes NTCREATEMUTANT = 0x280632B4, NTOPENMUTANT = 0xEC225D72, NTRELEASEMUTANT = 0x29567961, // Registry NTOPENKEY = 0x4BB73E02, NTQUERYVALUEKEY = 0xB4C18A83, // Process NTQUERYSYSTEMINFORMATION = 0xEE4F73A8, INVALID_SYSCALL_ID = 0xFFFFFFFF, //! Used to signify errors }; /** \brief Gets the basic ID for the hash given. This function does not dependent on the ID table but instead has hardcoded definitions for a FEW Apis (these are marked in the SYSCALL_IDS enum) \param func The hash of the API that the ID is searched for \return Returns the ID or INVALID_SYSCALL_ID \sa get_syscall_ID() */ DWORD get_basic_syscall_ID(SYSCALL_IDS func); /** \brief Initalizes the ID table. \return If FALSE no direct syscalls can be made. \sa free_ID_table() */ BOOL initalize_ID_table(); /** \brief Frees the ID table. After this is done no direct syscalls can be made anymore \sa initalize_ID_table() */ VOID destroy_ID_table(); /** \brief Gets the ID for the hash given. \pre This function does dependent on the ID table so make sure to initalize_ID_table() first. \param func The hash of the API that the ID is searched for \return Returns the ID or INVALID_SYSCALL_ID \sa initalize_ID_table() */ DWORD get_syscall_ID(DWORD func); #endif // GET_SYSCALL64_IDS_H