D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Порой при разработке malware продукта у кодера возникает задача - собрать информацию о конфигурации системы. В данной статье мы поговорим как раз об этом.
Первое, что нам нужно - получить юзернейм пользователя и имя компьютера:
C++: Скопировать в буфер обмена
Здесь все достаточно просто - в WinAPI уже есть функции, которые возвращают эти значения.
Далее мы хотим узнать, сколько оперативной памяти доступно в системе и какой процессор:
C++: Скопировать в буфер обмена
Опять же, никаких трудностей. С помощью __cpuid мы можем получить модель процессора, а GlobalMemoryStatusEx возвращает информацию об оперативной памяти.
Можем получить основной язык операционной системы:
C++: Скопировать в буфер обмена
Тут мы получаем LANGID (он же WORD) - идентификатор языка системы Windows. На MSDN можно Скачать
Первое, что нам нужно - получить юзернейм пользователя и имя компьютера:
C++: Скопировать в буфер обмена
Код:
LPCSTR getUsername()
{
char *username = new char[MAX_PATH]{'\0'};
DWORD size = MAX_PATH;
GetUserName(username, &size);
return username;
}
LPCSTR getPCName()
{
char *pcName = new char[MAX_PATH]{'\0'};
DWORD size = MAX_PATH;
GetComputerName(pcName, &size);
return pcName;
}
Здесь все достаточно просто - в WinAPI уже есть функции, которые возвращают эти значения.
Далее мы хотим узнать, сколько оперативной памяти доступно в системе и какой процессор:
C++: Скопировать в буфер обмена
Код:
LPCSTR getCPUName()
{
int cpuInfo[4] = {0, 0, 0, 0};
__cpuid(cpuInfo, 0x80000002);
char *cpuBrand = new char[48]{'\0'};
memcpy(cpuBrand, cpuInfo, sizeof(cpuInfo));
return (LPCSTR)cpuBrand;
}
DWORDLONG getRAMSize()
{
MEMORYSTATUSEX memInfo;
memInfo.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&memInfo);
return memInfo.ullTotalPhys;
}
Можем получить основной язык операционной системы:
C++: Скопировать в буфер обмена
Код:
LANGID getLangID()
{
LCID lcid = GetSystemDefaultLCID();
LANGID langId = PRIMARYLANGID(lcid);
return langId;
}