Узнать железо сервера

Статус
В этой теме нельзя размещать новые ответы.

ray1337

Участник
Сообщения
40
Реакции
1
Операционная система
Windows
Хочу узнать железо своего сервера. Видел плагины в других темах, но они не работают на Windows
 
Решение
Попробуйте
2020-10-16_21-48-50.png


Вы не сможете скомпилить плагин из-за [WINAPI_CALL] - наврядли это вам нужно
C-подобный:
#include <MemoryEx>

public Plugin myinfo =
{
    name = "[Windows] Get CPU name",
    author = "Rostu",
    version = "1.0",
    url = "vk.com/rostu13"
};

#define HKEY_LOCAL_MACHINE      0x80000002

public void OnPluginStart()
{
    CheckInitPEB();
}

public void MemoryEx_InitPEB()
{
    char sResult[PLATFORM_MAX_PATH];
    GetProccessorName(sResult, sizeof sResult);

    PrintToServer("Processor: %s", sResult);
}
void GetProccessorName(char[] sBuffer, int iMaxLength)
{
    int hKey;

    RegOpenKey(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", hKey);
    RegQueryValueEx(hKey, "ProcessorNameString", 0, 1, sBuffer, iMaxLength)...

Rostu

Добрая душа
Сообщения
986
Реакции
623
Попробуйте
2020-10-16_21-48-50.png


Вы не сможете скомпилить плагин из-за [WINAPI_CALL] - наврядли это вам нужно
C-подобный:
#include <MemoryEx>

public Plugin myinfo =
{
    name = "[Windows] Get CPU name",
    author = "Rostu",
    version = "1.0",
    url = "vk.com/rostu13"
};

#define HKEY_LOCAL_MACHINE      0x80000002

public void OnPluginStart()
{
    CheckInitPEB();
}

public void MemoryEx_InitPEB()
{
    char sResult[PLATFORM_MAX_PATH];
    GetProccessorName(sResult, sizeof sResult);

    PrintToServer("Processor: %s", sResult);
}
void GetProccessorName(char[] sBuffer, int iMaxLength)
{
    int hKey;

    RegOpenKey(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", hKey);
    RegQueryValueEx(hKey, "ProcessorNameString", 0, 1, sBuffer, iMaxLength);
    WINAPI_CALL("advapi32", "RegCloseKey", WINAPI_FLAG_NEED_RETURN, WINAPI_ARGS_COUNT(1), hKey);
}
int RegOpenKey(int key, const char[] subKey, int &hKey)
{
    static Pointer pFunc;
    static Handle h;

    if(pFunc == Address_Null)
    {
        pFunc = g_hMem.GetProcAddress("advapi32", "RegOpenKeyA");

        if(pFunc != Address_Null)
        {
            StartPrepSDKCall(SDKCall_Static);
            PrepSDKCall_SetAddress(pFunc);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_ByRef, _, VENCODE_FLAG_COPYBACK);
            PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
            h = EndPrepSDKCall();
        }
    }

    return SDKCall(h, key, subKey, hKey);
}
int RegQueryValueEx(int hKey, const char[] sSubKey, int reserv, int type, char[] sResult, int iMaxLength)
{
    static Pointer pFunc;
    static Handle h;

    if(pFunc == Address_Null)
    {
        pFunc = g_hMem.GetProcAddress("advapi32", "RegQueryValueExA");

        if(pFunc != Address_Null)
        {
            StartPrepSDKCall(SDKCall_Static);
            PrepSDKCall_SetAddress(pFunc);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Pointer);

            PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
            h = EndPrepSDKCall();
        }
    }
    Pointer pStr = VirtualAlloc(iMaxLength);
    int iReturn = SDKCall(h, hKey, sSubKey, reserv, type, pStr, iMaxLength);
    ReadString(pStr, sResult, iMaxLength);
    FreeMemory(pStr);
    return iReturn;
}
 

Вложения

  • b_cpu_windows.smx
    12.9 КБ · Просмотры: 20
Решение

ray1337

Участник
Сообщения
40
Реакции
1
Попробуйте
Посмотреть вложение 65748

Вы не сможете скомпилить плагин из-за [WINAPI_CALL] - наврядли это вам нужно
C-подобный:
#include <MemoryEx>

public Plugin myinfo =
{
    name = "[Windows] Get CPU name",
    author = "Rostu",
    version = "1.0",
    url = "vk.com/rostu13"
};

#define HKEY_LOCAL_MACHINE      0x80000002

public void OnPluginStart()
{
    CheckInitPEB();
}

public void MemoryEx_InitPEB()
{
    char sResult[PLATFORM_MAX_PATH];
    GetProccessorName(sResult, sizeof sResult);

    PrintToServer("Processor: %s", sResult);
}
void GetProccessorName(char[] sBuffer, int iMaxLength)
{
    int hKey;

    RegOpenKey(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", hKey);
    RegQueryValueEx(hKey, "ProcessorNameString", 0, 1, sBuffer, iMaxLength);
    WINAPI_CALL("advapi32", "RegCloseKey", WINAPI_FLAG_NEED_RETURN, WINAPI_ARGS_COUNT(1), hKey);
}
int RegOpenKey(int key, const char[] subKey, int &hKey)
{
    static Pointer pFunc;
    static Handle h;

    if(pFunc == Address_Null)
    {
        pFunc = g_hMem.GetProcAddress("advapi32", "RegOpenKeyA");

        if(pFunc != Address_Null)
        {
            StartPrepSDKCall(SDKCall_Static);
            PrepSDKCall_SetAddress(pFunc);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_ByRef, _, VENCODE_FLAG_COPYBACK);
            PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
            h = EndPrepSDKCall();
        }
    }

    return SDKCall(h, key, subKey, hKey);
}
int RegQueryValueEx(int hKey, const char[] sSubKey, int reserv, int type, char[] sResult, int iMaxLength)
{
    static Pointer pFunc;
    static Handle h;

    if(pFunc == Address_Null)
    {
        pFunc = g_hMem.GetProcAddress("advapi32", "RegQueryValueExA");

        if(pFunc != Address_Null)
        {
            StartPrepSDKCall(SDKCall_Static);
            PrepSDKCall_SetAddress(pFunc);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Pointer);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);
            PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Pointer);

            PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
            h = EndPrepSDKCall();
        }
    }
    Pointer pStr = VirtualAlloc(iMaxLength);
    int iReturn = SDKCall(h, hKey, sSubKey, reserv, type, pStr, iMaxLength);
    ReadString(pStr, sResult, iMaxLength);
    FreeMemory(pStr);
    return iReturn;
}
Спасибо тебе,
1602862640678.png
1602862646825.png
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу