CPUID got Compromised via Hijack !
assembly - CPUID implementations in C++ - Stack Overflow
What is a CPUID?
「CPU-Z」「HWMonitor」にマルウェアが混入か!? 配布サイト ...
Videos
The original website (cpuid.com) and its download links are currently malicious! It downloads a Setup.exe with a Russian languagesetup, and everything like the browser and antivirus says it's malicious. That's not normal! The file size also doesn't match the originals, just like the names of the files!
VirusTotal confirms this find: https://www.virustotal.com/gui/file/eefc0f986dd3ea376a4a54f80ce0dc3e6491165aefdd7d5d6005da3892ce248f This is caused by the Hijacked site. (Wacatac/Artemis/Tedy)
I don't know how to contact CPUID because this can also be manipulated, so stuff like emails or contact forms will not work or even really reach them!
Dont download any programms from them at the moment like: CPU Z HW Monitors etc.
And yes its really THE original site from CPUID before someone comes with this around but
Me and my Friend discovered it but no body else we need to change this immediately!
Update: DON'T download anything from there. They are replacing wrong links, incorrect filenames, and other versions to make it more sophisticated. They might even fix the wrong setup language to deceive and trick even more people
Accessing raw CPUID information is actually very easy, here is a C++ class for that which works in Windows, Linux and OSX:
#ifndef CPUID_H
#define CPUID_H
#ifdef _WIN32
#include <limits.h>
#include <intrin.h>
typedef unsigned __int32 uint32_t;
#else
#include <stdint.h>
#endif
class CPUID {
uint32_t regs[4];
public:
explicit CPUID(unsigned i) {
#ifdef _WIN32
__cpuid((int *)regs, (int)i);
#else
asm volatile
("cpuid" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3])
: "a" (i), "c" (0));
// ECX is set to zero for CPUID function 4
#endif
}
const uint32_t &EAX() const {return regs[0];}
const uint32_t &EBX() const {return regs[1];}
const uint32_t &ECX() const {return regs[2];}
const uint32_t &EDX() const {return regs[3];}
};
#endif // CPUID_H
To use it just instantiate an instance of the class, load the CPUID instruction you are interested in and examine the registers. For example:
#include "CPUID.h"
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
CPUID cpuID(0); // Get CPU vendor
string vendor;
vendor += string((const char *)&cpuID.EBX(), 4);
vendor += string((const char *)&cpuID.EDX(), 4);
vendor += string((const char *)&cpuID.ECX(), 4);
cout << "CPU vendor = " << vendor << endl;
return 0;
}
This Wikipedia page tells you how to use CPUID: http://en.wikipedia.org/wiki/CPUID
EDIT: Added #include <intrin.h> for Windows, per comments.
See this MSDN article about __cpuid.
There is a comprehensive sample that compiles with Visual Studio 2005 or better. For Visual Studio 6, you can use this instead of the compiler instrinsic __cpuid:
void __cpuid(int CPUInfo[4], int InfoType)
{
__asm
{
mov esi, CPUInfo
mov eax, InfoType
xor ecx, ecx
cpuid
mov dword ptr [esi + 0], eax
mov dword ptr [esi + 4], ebx
mov dword ptr [esi + 8], ecx
mov dword ptr [esi + 12], edx
}
}
For Visual Studio 2005, you can use this instead of the compiler instrinsic __cpuidex:
void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue)
{
__asm
{
mov esi, CPUInfo
mov eax, InfoType
mov ecx, ECXValue
cpuid
mov dword ptr [esi + 0], eax
mov dword ptr [esi + 4], ebx
mov dword ptr [esi + 8], ecx
mov dword ptr [esi + 12], edx
}
}
There's an engine/site called BYOND which bans users based on a unique CPUID they give which is apparently based on hardware. What sorts of things could they possibly base the ID on specifically and can any of it be changed? :3