consoleprograms
CPUPRINT.COM
(ASCII
output) and
CPUPRINT.EXE
(UTF-16LE
output) for
Microsoft®
Windows™ NT
decode and print the information gathered from the processor’s
CPUID
and
XGETBV
instructions.
CPUPRINT.COM
and CPUPRINT.EXE
enumerate the
processor capabilities alias features
IBRS,
STIBP,
IBPB,
L1D_FLUSH
and
SSBD
as well as the presence of the IA32_ARCH_CAPABILITIES
and IA32_FLUSH_CMD
model specific registers,
introduced by
AMD
and
Intel
with firmware alias microcode updates to fix the vulnerabilities
CVE-2017-5715
alias Branch Target Injection,
CVE-2017-5753
alias Bounds Check Bypass,
CVE-2017-5754
alias Rogue Data Cache Load,
CVE-2018-3639
alias Speculative Store Bypass,
CVE-2018-3640
alias Rogue System Register Read,
CVE-2018-3693
alias Bounds Check Bypass Store, and
CVE-2018-3615,
CVE-2018-3620
plus
CVE-2018-3646
alias L1 Termination Fault, better known by their
nicknames
Meltdown
,
Spectre
,
Spectre-NG
and
Foreshadow
.
They also enumerate the processor capabilities alias features
PCID,
introduced 2010 in first generation
Intel® Core™
processors with Westmere
microarchitecture, and
INVPCID,
introduced 2013 in fourth generation
Intel® Core™
processors with Haswell
microarchitecture, both available
only in long mode
, i.e. to 64-bit operating systems, which
are necessary to reduce the performance impact of the fix for
CVE-2017-5754
alias
Meltdown
.
Note: when started in their own console
window, for example per double-click, CPUPRINT.COM
and
CPUPRINT.EXE
wait for a keypress before they exit and
their console
window closes; they beep once and flash the
title bar of their console
window to indicate this wait
state.
CPUPRINT.EEE
shows typical output for an
Intel® Atom™
processor.
CPUPRINT.LOG
and
CPUPRINT.TXT
show typical outputs for
Intel® Core™
processors.
CPUPRINT.AMD
shows typical output for an
AMD® Athlon™
processor.
CPUPRINT.ZEN
shows the output for an
AMD® Ryzen™7 2700X
processor.
CPUPRINT.ZEN2
shows the output for an
AMD® Ryzen™5 3600
processor.
CPUPRINT.EPYC
shows the output for an
AMD® EPYC™ 7713
processor.
CPUPRINT.EXC
shows the output for an
AMD® A4-9125 Radeon™ R3
processor with microcode update applied.
CPUPRINT.CFL
shows the output for an
Intel® Core™ i5-8400
Coffee Lake
processor with microcode update applied.
CPUPRINT.NEW
shows the output for an
Intel® Core™ i7-7500U
processor with microcode update applied.
CPUPRINT.ICL
shows the output for an
Intel® Core™ i5-1035G1
Ice Lake
processor with microcode update applied.
CPUPRINT.HVP
shows the output for the same processor running under
Microsoft Hyper-V, which but exhibits significant
differences to the previous output.
CPUPRINT.KVM
shows the output for an
Intel® Xeon® Platinum 8124M
processor running under Linux’
KVM.
CPUPRINT.COM
and CPUPRINT.EXE
support
multiple specifications of (real and virtualised) x86
and x64 processors from several vendors:
CPUPRINT.COM
and CPUPRINT.EXE
are pure
Win32 binary executables, written from scratch in
ANSI C,
built with the CPUPRINT.COM
and CPUPRINT.EXE
are
available for the I386 alias x86 and the
AMD64 alias x64 processor architectures of
Windows NT.
Note: on the IA64 processor
architecture, the CPUID
instruction is supported in the emulated I386 alias
x86 execution environment only!
Note: CPUPRINT.COM
and
CPUPRINT.EXE
are neither based on other (abandoned or
outdated) tools like
cpuid,
cpuid,
cpuid
or
CPUID explorer part 1
and
CPUID explorer part 2
nor related to any of them!
RAWCPUID.COM
from the source
presented below that demonstrates the enumerator, but not the
decoder, and execute it.
Create the text file RAWCPUID.C
with the following
content in an arbitrary, preferable empty directory:
// Copyright © 2004-2024, Stefan Kanthak <stefan.kanthak@nexgo.de>
// * The software is provided "as is" without any warranty, neither express
// nor implied.
// * In no event will the author be held liable for any damage(s) arising
// from the use of the software.
// * Redistribution of the software is allowed only in unmodified form.
// * Permission is granted to use the software solely for personal private
// and non-commercial purposes.
// * An individuals use of the software in his or her capacity or function
// as an agent, (independent) contractor, employee, member or officer of
// a business, corporation or organization (commercial or non-commercial)
// does not qualify as personal private and non-commercial purpose.
// * Without written approval from the author the software must not be used
// for a business, for commercial, corporate, governmental, military or
// organizational purposes of any kind, or in a commercial, corporate,
// governmental, military or organizational environment of any kind.
#define STRICT
#undef UNICODE
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
__declspec(safebuffers)
BOOL CDECL PrintFormat(HANDLE hOutput, [SA_FormatString(Style="printf")] LPCSTR lpFormat, ...)
{
CHAR szString[1024];
DWORD dwString;
DWORD dwOutput;
va_list vaInput;
va_start(vaInput, lpFormat);
dwString = wvsprintf(szString, lpFormat, vaInput);
va_end(vaInput);
if ((dwString == 0)
#ifdef UNICODE
|| !WriteConsole(hOutput, szString, dwString, &dwOutput, NULL))
#else
|| !WriteFile(hOutput, szString, dwString, &dwOutput, (LPOVERLAPPED) NULL))
#endif
return FALSE;
return dwOutput == dwString;
}
__declspec(noreturn)
VOID CDECL mainCRTStartup(VOID)
{
union
{
DWORD dw[4]; // EAX, EBX, ECX, EDX
WORD w[8];
BYTE b[16];
} CPUInfo, Default;
#ifndef _WIN64
BOOL bWoW64;
#endif
DWORD dwLeaf;
DWORD dwHigh;
DWORD dwSubLeaf;
DWORD dwSubHigh;
DWORD dwSubMask;
DWORD dwError = ERROR_SUCCESS;
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
if (hOutput == INVALID_HANDLE_VALUE)
dwError = GetLastError();
else
{
#ifndef _WIN64
if (!IsWow64Process(GetCurrentProcess(), &bWoW64))
PrintFormat(hOutput,
"%s() returned error %u\n",
"IsWow64Process", dwError = GetLastError());
else
if (bWoW64)
PrintFormat(hOutput,
"CAVEAT: some flags differ in 32-bit mode from native 64-bit mode!\n");
#endif
if (SetThreadIdealProcessor(GetCurrentThread(), 0) == -1)
PrintFormat(hOutput,
"%s() returned error %u\n",
"SetThreadIdealProcessor", dwError = GetLastError());
PrintFormat(hOutput,
"Leaf, SubLeaf: EAX EBX ECX EDX\n");
__cpuid(CPUInfo.dw, dwLeaf = 0x00000000);
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
switch (dwLeaf)
{
case 0x00000004: // Deterministic Cache Parameters
for (dwSubLeaf = 0; (CPUInfo.dw[0] & 0x0000001F) != 0; __cpuidex(CPUInfo.dw, 0x00000004, ++dwSubLeaf))
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000004, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
break;
case 0x00000007: // Structured Extended Feature Flags Enumeration
case 0x00000014: // Processor Trace Enumeration
case 0x00000017: // System-On-Chip Vendor Attribute Enumeration
case 0x00000018: // Deterministic Address Translation Parameters Enumeration
case 0x0000001D: // TILE Information Enumeration
case 0x00000020: // Processor History Reset Enumeration
// case 0x00000021: // Intel Trust Domain Extensions Enumeration (NEVER SHIPPED)
case 0x00000024: // Intel AVX10 Converged Vector Instruction Set Enumeration
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubHigh = CPUInfo.dw[0], dwSubLeaf = 1; dwSubLeaf <= dwSubHigh; dwSubLeaf++)
{
__cpuidex(CPUInfo.dw, dwLeaf, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x0000000B: // Extended Topology Enumeration
case 0x0000001F: // V2 Extended Topology Enumeration
#if 0
for (dwSubLeaf = 0; CPUInfo.b[9] != 0; __cpuidex(CPUInfo.dw, dwLeaf, ++dwSubLeaf))
#else
for (dwSubLeaf = 0; CPUInfo.w[2] != 0; __cpuidex(CPUInfo.dw, dwLeaf, ++dwSubLeaf))
#endif
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
break;
case 0x0000000D: // Processor Extended State Enumeration
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000D, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
__cpuidex(CPUInfo.dw, 0x0000000D, 0x00000001);
if ((CPUInfo.dw[0] != 0)
|| (CPUInfo.dw[1] != 0)
|| (CPUInfo.dw[2] != 0)
|| (CPUInfo.dw[3] != 0))
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000D, 0x00000001, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
__cpuid(CPUInfo.dw, 0x0000000D);
for (dwSubMask = CPUInfo.dw[0] & 0xFFFFFFFC; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
__cpuidex(CPUInfo.dw, 0x0000000D, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000D, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
__cpuid(CPUInfo.dw, 0x0000000D);
for (dwSubMask = CPUInfo.dw[3]; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
dwSubLeaf += 32;
__cpuidex(CPUInfo.dw, 0x0000000D, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000D, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x0000000F: // Platform Quality of Service Monitoring Enumeration
// Resource Director Technology Monitoring Enumeration
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000F, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubMask = CPUInfo.dw[3] & 0xFFFFFFFE; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
__cpuidex(CPUInfo.dw, 0x0000000F, dwSubLeaf);
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000000F, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x00000010: // Platform Quality of Service Enforcement Enumeration
// Resource Director Technology Allocation Enumeration
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000010, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubMask = CPUInfo.dw[1] & 0xFFFFFFFE; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
__cpuidex(CPUInfo.dw, 0x00000010, dwSubLeaf);
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000010, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x00000012: // Software Guard Extensions Enumeration
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000012, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubLeaf = 1; dwSubLeaf < 33; dwSubLeaf++)
{
__cpuidex(CPUInfo.dw, 0x00000012, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000012, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x0000001B: // PCONFIG Information Enumeration
for (dwSubLeaf = 0; (CPUInfo.dw[0] & 0xFFF) != 0; __cpuidex(CPUInfo.dw, 0x0000001B, ++dwSubLeaf))
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x0000001B, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
break;
case 0x00000023: // Architectural Performance Monitoring Extended Information
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000023, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubMask = CPUInfo.dw[0] & 0xFFFFFFFE; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
__cpuidex(CPUInfo.dw, 0x00000023, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x00000023, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
#if 0
case 0x00000000: // Maximum Basic Leaf and Vendor Identification
case 0x00000001: // Basic Processor Version and Features
case 0x00000002: // Cache and Translation Lookaside Buffer Information
case 0x00000003: // Processor Serial Number
case 0x00000005: // MONITOR/MWAIT Information
case 0x00000006: // Thermal and Power Management
case 0x00000008: // RESERVED
case 0x00000009: // Direct Cache Access Information
case 0x0000000A: // Architectural Performance Monitoring
case 0x0000000C: // RESERVED
case 0x0000000E: // RESERVED
case 0x00000011: // UNUSED
case 0x00000013: // UNUSED
case 0x00000015: // Time Stamp Counter and Nominal Core Crystal Clock Information
case 0x00000016: // Processor Frequency Information Enumeration
case 0x00000019: // Key Locker Enumeration
case 0x0000001A: // Native Model Identification Enumeration
case 0x0000001C: // Architectural Last Branch Record Information Enumeration
case 0x0000001E: // TMUL Information Enumeration
case 0x00000021: // INVALID
#endif
default:
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
}
__cpuid(Default.dw, dwHigh);
#ifdef XEON_PHI
__cpuid(CPUInfo.dw, dwLeaf = 0x20000000);
if ((CPUInfo.dw[0] != Default.dw[0])
|| (CPUInfo.dw[1] != Default.dw[1])
|| (CPUInfo.dw[2] != Default.dw[2])
|| (CPUInfo.dw[3] != Default.dw[3]))
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
#endif // XEON_PHI
__cpuid(CPUInfo.dw, dwLeaf = 0x40000000);
if ((CPUInfo.dw[0] != Default.dw[0])
|| (CPUInfo.dw[1] != Default.dw[1])
|| (CPUInfo.dw[2] != Default.dw[2])
|| (CPUInfo.dw[3] != Default.dw[3]))
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
__cpuid(CPUInfo.dw, dwLeaf = 0x40000080);
if ((CPUInfo.dw[0] != Default.dw[0])
|| (CPUInfo.dw[1] != Default.dw[1])
|| (CPUInfo.dw[2] != Default.dw[2])
|| (CPUInfo.dw[3] != Default.dw[3]))
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
__cpuid(CPUInfo.dw, dwLeaf = 0x80000000);
if ((CPUInfo.dw[0] != Default.dw[0])
|| (CPUInfo.dw[1] != Default.dw[1])
|| (CPUInfo.dw[2] != Default.dw[2])
|| (CPUInfo.dw[3] != Default.dw[3]))
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((dwLeaf > 0x80000004)
&& (CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
switch (dwLeaf)
{
case 0x8000001D: // Cache Topology Information
for (dwSubLeaf = 0; (CPUInfo.dw[0] & 0x0000001F) != 0; __cpuidex(CPUInfo.dw, 0x8000001D, ++dwSubLeaf))
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x8000001D, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
break;
case 0x80000020: // Bandwidth Enforcement Information
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x80000020, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
for (dwSubMask = CPUInfo.dw[1] & 0xFFFFFFFE; _BitScanForward(&dwSubLeaf, dwSubMask); dwSubMask &= dwSubMask - 1)
{
__cpuidex(CPUInfo.dw, 0x80000020, dwSubLeaf);
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x80000020, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
break;
case 0x80000026: // Extended CPU Topology Enumeration
for (dwSubLeaf = 0; CPUInfo.b[9] != 0; __cpuidex(CPUInfo.dw, dwLeaf, ++dwSubLeaf))
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
0x80000026, dwSubLeaf, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
break;
#if 0
case 0x80000000: // Maximum Extended Leaf and Vendor Identification
case 0x80000001: // Extended Processor Information and Features
case 0x80000002: // Processor Brand String, Part 1
case 0x80000003: // Processor Brand String, Part 2
case 0x80000004: // Processor Brand String, Part 3
case 0x80000005: // L1 Cache and Translation Lookaside Buffer Configuration
case 0x80000006: // L2 Cache and Translation Lookaside Buffer Configuration
case 0x80000007: // Thermal and Power Management Capabilities
case 0x80000008: // Virtual and Physical Address Sizes
case 0x80000009: // RESERVED
case 0x8000000A: // Secure Virtual Machine Information
case 0x8000000B: // RESERVED
case 0x8000000C: // RESERVED
case 0x8000000D: // RESERVED
case 0x8000000E: // RESERVED
case 0x8000000F: // RESERVED
case 0x80000010: // RESERVED
case 0x80000011: // RESERVED
case 0x80000012: // RESERVED
case 0x80000013: // RESERVED
case 0x80000014: // RESERVED
case 0x80000015: // RESERVED
case 0x80000016: // RESERVED
case 0x80000017: // RESERVED
case 0x80000018: // RESERVED
case 0x80000019: // Translation Lookaside Buffer Configuration
case 0x8000001A: // Performance Optimization Identifiers
case 0x8000001B: // Instruction Based Sampling Identifiers
case 0x8000001C: // Light-Weight Profiling Capabilities
case 0x8000001E: // Extended Advanced Programmable Interrupt Controller Information
case 0x8000001F: // Secure Memory Encryption and Secure Encrypted Virtualization Information
case 0x80000021: // Extended Feature Identification 2
case 0x80000022: // Extended Performance Monitoring and Debug
case 0x80000023: // Multi-Key Encrypted Memory Capabilities
case 0x80000024: // RESERVED
case 0x80000025: // RESERVED
#endif
default:
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
}
__cpuid(CPUInfo.dw, dwLeaf = 0xC0000000);
if ((CPUInfo.dw[0] != Default.dw[0])
|| (CPUInfo.dw[1] != Default.dw[1])
|| (CPUInfo.dw[2] != Default.dw[2])
|| (CPUInfo.dw[3] != Default.dw[3]))
for (dwHigh = CPUInfo.dw[0]; dwLeaf <= dwHigh; __cpuid(CPUInfo.dw, ++dwLeaf))
{
if ((CPUInfo.dw[0] == 0)
&& (CPUInfo.dw[1] == 0)
&& (CPUInfo.dw[2] == 0)
&& (CPUInfo.dw[3] == 0))
continue;
PrintFormat(hOutput,
"0x%08X, 0x%08X: 0x%08X 0x%08X 0x%08X 0x%08X\n",
dwLeaf, 0x00000000, CPUInfo.dw[0], CPUInfo.dw[1], CPUInfo.dw[2], CPUInfo.dw[3]);
}
if (!CloseHandle(hOutput))
PrintFormat(hOutput,
"%s() returned error %u\n",
"CloseHandle", GetLastError());
}
ExitProcess(dwError);
}
Run the following four command lines to compile the source file
RAWCPUID.C
created in step 1., link the compiled
object file RAWCPUID.OBJ
and cleanup afterwards:
SET CL=/GA /GF /GS /Gy /O1 /Os /Oy /W4 /Zl SET LINK=/DEFAULTLIB:KERNEL32.LIB /DEFAULTLIB:USER32.LIB /ENTRY:mainCRTStartup /LARGEADDRESSAWARE /NOCOFFGRPINFO /OSVERSION:5.1 /RELEASE /SUBSYSTEM:CONSOLE /SWAPRUN:CD,NET /VERSION:0.815 CL.EXE /FeRAWCPUID.COM RAWCPUID.C ERASE RAWCPUID.OBJ
For details and reference see the MSDN articles Compiler Options and Linker Options.
Note: if necessary, see the MSDN article Use the Microsoft C++ toolset from the command line for an introduction.
Note: the command lines can be copied and pasted as block into a Command Processor window!
Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. RAWCPUID.C Microsoft (R) Incremental Linker Version 10.00.40219.386 Copyright (C) Microsoft Corporation. All rights reserved. …
Create the text file RAWCPUID.TXT
with the following
content in an arbitrary, preferable empty directory:
4d 5a 90 00 01 00 00 00 04 00 00 00 ff ff 00 00 MZ..............
d0 00 00 00 43 00 00 00 40 00 00 00 00 00 00 00 ....C...@.......
00 00 00 00 19 57 04 27 00 00 00 00 00 00 00 00 .....W.'........
00 00 00 00 00 00 00 00 00 00 00 00 90 00 00 00 ................
28 43 29 6f 70 79 72 69 67 68 74 20 32 30 30 34 (C)opyright 2004
2d 32 30 32 34 2c 20 53 74 65 66 61 6e 20 4b 61 -2024, Stefan Ka
6e 74 68 61 6b 20 3c 73 74 65 66 61 6e 2e 6b 61 nthak <stefan.ka
6e 74 68 61 6b 40 6e 65 78 67 6f 2e 64 65 3e 0d nthak@nexgo.de>.
0a 07 24 0e 1f 33 d2 b4 09 cd 21 b8 01 4c cd 21 ..$..3....!..L.!
50 45 00 00 4c 01 02 00 56 4f 49 44 00 00 00 00 PE..L...VOID....
00 00 00 00 e0 00 23 0d 0b 01 0a 00 00 0c 00 00 ......#.........
00 04 00 00 00 00 00 00 4e 10 00 00 00 10 00 00 ........N.......
00 20 00 00 00 00 40 00 00 10 00 00 00 02 00 00 . ....@.........
05 00 01 00 00 00 2f 03 05 00 01 00 00 00 00 00 ....../.........
00 30 00 00 00 02 00 00 02 d2 00 00 03 00 00 85 .0..............
00 00 10 00 00 10 00 00 00 00 10 00 00 10 00 00 ................
00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ................
34 21 00 00 3c 00 00 00 00 00 00 00 00 00 00 00 4!..<...........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 20 00 00 30 00 00 00 ......... ..0...
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 2e 63 6f 64 65 00 00 00 .........code...
6e 0a 00 00 00 10 00 00 00 0c 00 00 00 02 00 00 n...............
00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 60 ............ ..`
2e 63 6f 6e 73 74 00 00 64 02 00 00 00 20 00 00 .const..d.... ..
00 04 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 40 00 00 40 00 00 00 00 00 00 00 00 ....@..@........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
55 8b ec 81 ec 08 04 00 00 56 8d 45 10 50 ff 75 U........V.E.P.u
0c 8d 85 f8 fb ff ff 50 ff 15 28 20 40 00 8b f0 .......P..( @...
85 f6 74 25 6a 00 8d 45 fc 50 56 8d 85 f8 fb ff ..t%j..E.PV.....
ff 50 ff 75 08 ff 15 00 20 40 00 85 c0 74 0a 33 .P.u.... @...t.3
c0 39 75 fc 0f 94 c0 eb 02 33 c0 5e c9 c3 55 8b .9u......3.^..U.
ec 83 ec 3c 83 65 e8 00 53 56 57 6a f5 ff 15 20 ...<.e..SVWj...
20 40 00 8b d8 89 5d f0 83 fb ff 75 0e ff 15 1c @....]....u....
20 40 00 89 45 e8 e9 a1 09 00 00 8d 45 e4 50 ff @..E.......E.P.
15 18 20 40 00 50 ff 15 14 20 40 00 8b 35 1c 20 .. @.P... @..5.
40 00 bf 1c 21 40 00 85 c0 75 17 ff d6 50 68 0c @...!@...u...Ph.
21 40 00 57 53 89 45 e8 e8 53 ff ff ff 83 c4 10 !@.WS.E..S......
eb 13 83 7d e4 00 74 0d 68 c8 20 40 00 53 e8 3d ...}..t.h. @.S.=
ff ff ff 59 59 6a 00 ff 15 10 20 40 00 50 ff 15 ...YYj.... @.P..
0c 20 40 00 83 f8 ff 75 15 ff d6 50 68 ac 20 40 . @....u...Ph. @
00 57 53 89 45 e8 e8 15 ff ff ff 83 c4 10 68 6c .WS.E.........hl
20 40 00 53 e8 07 ff ff ff 83 65 f8 00 59 33 c0 @.S......e..Y3.
59 33 c9 0f a2 8d 75 d4 89 06 89 5e 04 89 4e 08 Y3....u....^..N.
89 56 0c 8b 5d d4 89 5d ec be 3c 20 40 00 eb 03 .V..]..]..< @...
8b 5d d4 8b 7d e0 8b 45 dc 33 c9 3b d9 75 11 39 .]..}..E.3.;.u.9
4d d8 75 0c 3b c1 75 08 3b f9 0f 84 c2 04 00 00 M.u.;.u.;.......
8b 55 f8 83 c2 fc 83 fa 1f 0f 87 9d 04 00 00 0f .U..............
b6 92 4e 1a 40 00 ff 24 95 26 1a 40 00 89 4d fc ..N.@..$.&.@..M.
f6 c3 1f 0f 84 99 04 00 00 eb 06 8b 7d e0 8b 45 ............}..E
dc 57 50 ff 75 d8 53 ff 75 fc 6a 04 56 ff 75 f0 .WP.u.S.u.j.V.u.
e8 7b fe ff ff 83 c4 20 ff 45 fc 8b 4d fc 6a 04 .{..... .E..M.j.
58 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 57 X...}...._..O..W
0c 8b 5d d4 f6 c3 1f 75 c2 e9 54 04 00 00 57 50 ..]....u..T...WP
ff 75 d8 53 51 ff 75 f8 56 ff 75 f0 e8 3f fe ff .u.SQ.u.V.u..?..
ff 33 c0 40 83 c4 20 89 5d f4 89 45 fc 3b d8 0f .3.@.. .]..E.;..
82 2d 04 00 00 8b 45 f8 8b 4d fc 0f a2 8d 7d d4 .-....E..M....}.
89 07 89 5f 04 89 4f 08 33 c0 89 57 0c 39 45 d4 ..._..O.3..W.9E.
75 0f 39 45 d8 75 0a 39 45 dc 75 05 39 45 e0 74 u.9E.u.9E.u.9E.t
1e ff 75 e0 ff 75 dc ff 75 d8 ff 75 d4 ff 75 fc ..u..u..u..u..u.
ff 75 f8 56 ff 75 f0 e8 e4 fd ff ff 83 c4 20 ff .u.V.u........ .
45 fc 8b 45 fc 3b 45 f4 76 ab e9 d3 03 00 00 89 E..E.;E.v.......
4d fc 3a e1 0f 84 c8 03 00 00 eb 06 8b 7d e0 8b M.:..........}..
5d d4 57 50 ff 75 d8 53 ff 75 fc ff 75 f8 56 ff ].WP.u.S.u..u.V.
75 f0 e8 a9 fd ff ff 8b 45 f8 83 c4 20 ff 45 fc u.......E... .E.
8b 4d fc 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 .M....}...._..O.
89 57 0c 8b 45 dc 84 e4 75 c2 e9 83 03 00 00 57 .W..E...u......W
50 ff 75 d8 53 51 6a 0d 56 ff 75 f0 e8 6f fd ff P.u.SQj.V.u..o..
ff 83 c4 20 33 c9 6a 0d 41 58 0f a2 8d 7d d4 89 ... 3.j.AX...}..
07 89 5f 04 89 4f 08 33 c0 89 57 0c 39 45 d4 75 .._..O.3..W.9E.u
0f 39 45 d8 75 0a 39 45 dc 75 05 39 45 e0 74 1c .9E.u.9E.u.9E.t.
ff 75 e0 ff 75 dc ff 75 d8 ff 75 d4 6a 01 6a 0d .u..u..u..u.j.j.
56 ff 75 f0 e8 27 fd ff ff 83 c4 20 6a 0d 33 c9 V.u..'..... j.3.
58 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 57 X...}...._..O..W
0c 8b 45 d4 83 e0 fc 89 45 f4 0f bc c0 eb 4e 8b ..E.....E.....N.
4d fc 0f a2 89 07 89 5f 04 89 4f 08 33 c0 89 57 M......_..O.3..W
0c 39 45 d4 75 0f 39 45 d8 75 0a 39 45 dc 75 05 .9E.u.9E.u.9E.u.
39 45 e0 74 1d ff 75 e0 ff 75 dc ff 75 d8 ff 75 9E.t..u..u..u..u
d4 ff 75 fc 6a 0d 56 ff 75 f0 e8 c1 fc ff ff 83 ..u.j.V.u.......
c4 20 8b 45 f4 48 21 45 f4 0f bc 45 f4 6a 0d 89 . .E.H!E...E.j..
45 fc 8d 7d d4 58 75 a7 33 c9 0f a2 89 07 89 5f E..}.Xu.3......_
04 89 4f 08 89 57 0c 8b 45 e0 0f bc c8 89 45 f4 ..O..W..E.....E.
0f 84 8c 02 00 00 83 c1 20 6a 0d 58 89 4d fc 0f ........ j.X.M..
a2 8d 7d d4 89 07 89 5f 04 89 4f 08 33 c0 89 57 ..}...._..O.3..W
0c 39 45 d4 75 0f 39 45 d8 75 0a 39 45 dc 75 05 .9E.u.9E.u.9E.u.
39 45 e0 74 1d ff 75 e0 ff 75 dc ff 75 d8 ff 75 9E.t..u..u..u..u
d4 ff 75 fc 6a 0d 56 ff 75 f0 e8 41 fc ff ff 83 ..u.j.V.u..A....
c4 20 8b 45 f4 48 21 45 f4 0f bc 4d f4 75 a7 e9 . .E.H!E...M.u..
2e 02 00 00 57 50 ff 75 d8 53 51 6a 0f 56 ff 75 ....WP.u.SQj.V.u
f0 e8 1a fc ff ff 83 e7 fe 83 c4 20 89 7d f4 0f ........... .}..
bc c7 eb 3e 8b 4d fc 6a 0f 58 0f a2 8d 7d d4 89 ...>.M.j.X...}..
07 89 5f 04 89 4f 08 89 57 0c ff 75 e0 ff 75 dc .._..O..W..u..u.
ff 75 d8 ff 75 d4 ff 75 fc 6a 0f 56 ff 75 f0 e8 .u..u..u.j.V.u..
dc fb ff ff 8b 45 f4 83 c4 20 48 21 45 f4 0f bc .....E... H!E...
45 f4 89 45 fc 75 bd e9 c6 01 00 00 57 50 ff 75 E..E.u......WP.u
d8 53 51 6a 10 56 ff 75 f0 e8 b2 fb ff ff 8b 45 .SQj.V.u.......E
d8 83 e0 fe 83 c4 20 89 45 f4 0f bc c0 eb 3e 8b ...... .E.....>.
4d fc 6a 10 58 0f a2 8d 7d d4 89 07 89 5f 04 89 M.j.X...}...._..
4f 08 89 57 0c ff 75 e0 ff 75 dc ff 75 d8 ff 75 O..W..u..u..u..u
d4 ff 75 fc 6a 10 56 ff 75 f0 e8 71 fb ff ff 8b ..u.j.V.u..q....
45 f4 83 c4 20 48 21 45 f4 0f bc 45 f4 89 45 fc E... H!E...E..E.
75 bd e9 5b 01 00 00 57 50 ff 75 d8 53 51 6a 12 u..[...WP.u.SQj.
56 ff 75 f0 e8 47 fb ff ff 83 c4 20 c7 45 fc 01 V.u..G..... .E..
00 00 00 8b 4d fc 6a 12 58 0f a2 8d 7d d4 89 07 ....M.j.X...}...
89 5f 04 89 4f 08 33 c0 89 57 0c 39 45 d4 75 0f ._..O.3..W.9E.u.
39 45 d8 75 0a 39 45 dc 75 05 39 45 e0 74 1d ff 9E.u.9E.u.9E.t..
75 e0 ff 75 dc ff 75 d8 ff 75 d4 ff 75 fc 6a 12 u..u..u..u..u.j.
56 ff 75 f0 e8 f7 fa ff ff 83 c4 20 ff 45 fc 83 V.u........ .E..
7d fc 21 72 ae e9 e8 00 00 00 89 4d fc f7 c3 ff }.!r.......M....
0f 00 00 0f 84 d9 00 00 00 eb 06 8b 7d e0 8b 45 ............}..E
dc 57 50 ff 75 d8 53 ff 75 fc 6a 1b 56 ff 75 f0 .WP.u.S.u.j.V.u.
e8 bb fa ff ff 83 c4 20 ff 45 fc 8b 4d fc 6a 1b ....... .E..M.j.
58 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 57 X...}...._..O..W
0c 8b 5d d4 f7 c3 ff 0f 00 00 75 bf e9 91 00 00 ..].......u.....
00 57 50 ff 75 d8 53 51 6a 23 56 ff 75 f0 e8 7d .WP.u.SQj#V.u..}
fa ff ff 83 e3 fe 83 c4 20 89 5d f4 0f bc c3 eb ........ .].....
54 8b 4d fc 6a 23 58 0f a2 8d 7d d4 89 07 89 5f T.M.j#X...}...._
04 89 4f 08 33 c0 89 57 0c 39 45 d4 75 0f 39 45 ..O.3..W.9E.u.9E
d8 75 0a 39 45 dc 75 05 39 45 e0 74 1d ff 75 e0 .u.9E.u.9E.t..u.
ff 75 dc ff 75 d8 ff 75 d4 ff 75 fc 6a 23 56 ff .u..u..u..u.j#V.
75 f0 e8 29 fa ff ff 83 c4 20 8b 45 f4 48 21 45 u..)..... .E.H!E
f4 0f bc 45 f4 89 45 fc 75 a7 eb 16 57 50 ff 75 ...E..E.u...WP.u
d8 53 51 ff 75 f8 56 ff 75 f0 e8 01 fa ff ff 83 .SQ.u.V.u.......
c4 20 ff 45 f8 8b 45 f8 33 c9 0f a2 8d 7d d4 89 . .E..E.3....}..
07 8b 45 ec 89 5f 04 89 4f 08 89 57 0c 39 45 f8 ..E.._..O..W.9E.
0f 86 fa fa ff ff 33 c9 0f a2 8d 7d c4 89 07 89 ......3....}....
5f 04 89 4f 08 b8 00 00 00 40 89 57 0c 33 c9 89 _..O.....@.W.3..
45 f8 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 E....}...._..O..
57 0c 8b 45 d4 3b 45 c4 75 18 8b 4d d8 3b 4d c8 W..E.;E.u..M.;M.
75 10 8b 4d dc 3b 4d cc 75 08 8b 4d e0 3b 4d d0 u..M.;M.u..M.;M.
74 5e 89 45 ec 3d 00 00 00 40 72 54 eb 03 8b 45 t^.E.=...@rT...E
d4 33 c9 3b c1 75 0f 39 4d d8 75 0a 39 4d dc 75 .3.;.u.9M.u.9M.u
05 39 4d e0 74 1a ff 75 e0 ff 75 dc ff 75 d8 50 .9M.t..u..u..u.P
51 ff 75 f8 56 ff 75 f0 e8 53 f9 ff ff 83 c4 20 Q.u.V.u..S.....
ff 45 f8 8b 45 f8 33 c9 0f a2 8d 7d d4 89 07 8b .E..E.3....}....
45 f8 89 5f 04 89 4f 08 89 57 0c 3b 45 ec 76 ae E.._..O..W.;E.v.
b8 80 00 00 40 33 c9 89 45 f8 0f a2 8d 7d d4 89 ....@3..E....}..
07 89 5f 04 89 4f 08 89 57 0c 8b 45 d4 3b 45 c4 .._..O..W..E.;E.
75 18 8b 4d d8 3b 4d c8 75 10 8b 4d dc 3b 4d cc u..M.;M.u..M.;M.
75 08 8b 4d e0 3b 4d d0 74 5e 89 45 ec 3d 80 00 u..M.;M.t^.E.=..
00 40 72 54 eb 03 8b 45 d4 33 c9 3b c1 75 0f 39 .@rT...E.3.;.u.9
4d d8 75 0a 39 4d dc 75 05 39 4d e0 74 1a ff 75 M.u.9M.u.9M.t..u
e0 ff 75 dc ff 75 d8 50 51 ff 75 f8 56 ff 75 f0 ..u..u.PQ.u.V.u.
e8 bb f8 ff ff 83 c4 20 ff 45 f8 8b 45 f8 33 c9 ....... .E..E.3.
0f a2 8d 7d d4 89 07 8b 45 f8 89 5f 04 89 4f 08 ...}....E.._..O.
89 57 0c 3b 45 ec 76 ae b8 00 00 00 80 33 c9 89 .W.;E.v......3..
45 f8 0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 E....}...._..O..
57 0c 8b 45 d4 8b 7d d8 3b 45 c4 75 19 3b 7d c8 W..E..}.;E.u.;}.
75 14 8b 4d dc 3b 4d cc 75 0c 8b 4d e0 3b 4d d0 u..M.;M.u..M.;M.
0f 84 b5 01 00 00 89 45 ec 3d 00 00 00 80 0f 82 .......E.=......
a7 01 00 00 eb 06 8b 7d d8 8b 45 d4 33 d2 3b c2 .......}..E.3.;.
75 12 3b fa 75 0e 39 55 dc 75 09 39 55 e0 0f 84 u.;.u.9U.u.9U...
63 01 00 00 8b 4d f8 81 f9 1d 00 00 80 0f 84 0c c....M..........
01 00 00 bb 20 00 00 80 3b cb 74 77 81 f9 26 00 .... ...;.tw..&.
00 80 74 1b ff 75 e0 ff 75 dc 57 50 52 51 56 ff ..t..u..u.WPRQV.
75 f0 e8 f9 f7 ff ff 83 c4 20 e9 28 01 00 00 89 u........ .(....
55 fc 38 55 dd 0f 84 1c 01 00 00 eb 06 8b 7d d8 U.8U..........}.
8b 45 d4 ff 75 e0 ff 75 dc 57 50 ff 75 fc bf 26 .E..u..u.WP.u..&
00 00 80 57 56 ff 75 f0 e8 c3 f7 ff ff 83 c4 20 ...WV.u........
ff 45 fc 8b 4d fc 8b c7 0f a2 8d 7d d4 89 07 89 .E..M......}....
5f 04 89 4f 08 89 57 0c 80 7d dd 00 75 bf e9 d4 _..O..W..}..u...
00 00 00 ff 75 e0 ff 75 dc 57 50 52 53 56 ff 75 ....u..u.WPRSV.u
f0 e8 8a f7 ff ff 83 e7 fe 83 c4 20 0f bc c7 89 ........... ....
7d f4 89 45 fc 0f 84 ac 00 00 00 eb 05 bb 20 00 }..E.......... .
00 80 8b 4d fc 8b c3 0f a2 8d 7d d4 89 07 89 5f ...M......}...._
04 89 4f 08 33 c0 89 57 0c 39 45 d4 75 0f 39 45 ..O.3..W.9E.u.9E
d8 75 0a 39 45 dc 75 05 39 45 e0 74 20 ff 75 e0 .u.9E.u.9E.t .u.
ff 75 dc ff 75 d8 ff 75 d4 ff 75 fc 68 20 00 00 .u..u..u..u.h ..
80 56 ff 75 f0 e8 26 f7 ff ff 83 c4 20 8b 45 f4 .V.u..&..... .E.
48 21 45 f4 0f bc 45 f4 89 45 fc 75 a0 eb 48 89 H!E...E..E.u..H.
55 fc a8 1f 74 41 eb 03 8b 7d d8 ff 75 e0 ff 75 U...tA...}..u..u
dc 57 50 ff 75 fc bf 1d 00 00 80 57 56 ff 75 f0 .WP.u......WV.u.
e8 eb f6 ff ff 83 c4 20 ff 45 fc 8b 4d fc 8b c7 ....... .E..M...
0f a2 8d 7d d4 89 07 89 5f 04 89 4f 08 89 57 0c ...}...._..O..W.
8b 45 d4 a8 1f 75 c1 ff 45 f8 8b 45 f8 33 c9 0f .E...u..E..E.3..
a2 8d 7d d4 89 07 8b 45 f8 89 5f 04 89 4f 08 89 ..}....E.._..O..
57 0c 3b 45 ec 0f 86 5b fe ff ff b8 00 00 00 c0 W.;E...[........
33 c9 89 45 f8 0f a2 8d 7d d4 89 07 89 5f 04 89 3..E....}...._..
4f 08 89 57 0c 8b 45 d4 3b 45 c4 75 18 8b 4d d8 O..W..E.;E.u..M.
3b 4d c8 75 10 8b 4d dc 3b 4d cc 75 08 8b 4d e0 ;M.u..M.;M.u..M.
3b 4d d0 74 5e 89 45 ec 3d 00 00 00 c0 72 54 eb ;M.t^.E.=....rT.
03 8b 45 d4 33 c9 3b c1 75 0f 39 4d d8 75 0a 39 ..E.3.;.u.9M.u.9
4d dc 75 05 39 4d e0 74 1a ff 75 e0 ff 75 dc ff M.u.9M.t..u..u..
75 d8 50 51 ff 75 f8 56 ff 75 f0 e8 30 f6 ff ff u.PQ.u.V.u..0...
83 c4 20 ff 45 f8 8b 45 f8 33 c9 0f a2 8d 7d d4 .. .E..E.3....}.
89 07 8b 45 f8 89 5f 04 89 4f 08 89 57 0c 3b 45 ...E.._..O..W.;E
ec 76 ae ff 75 f0 ff 15 08 20 40 00 85 c0 75 1c .v..u.... @...u.
ff 15 1c 20 40 00 50 68 30 20 40 00 68 1c 21 40 ... @.Ph0 @.h.!@
00 ff 75 f0 e8 e7 f5 ff ff 83 c4 10 ff 75 e8 ff ..u..........u..
15 04 20 40 00 90 5d 11 40 00 ae 11 40 00 2f 12 .. @..].@...@./.
40 00 7f 12 40 00 d4 13 40 00 3c 14 40 00 a7 14 @...@...@.<.@...
40 00 1a 15 40 00 71 15 40 00 ec 15 40 00 00 09 @...@.q.@...@...
09 01 09 09 09 02 09 03 09 04 05 09 06 09 01 09 ................
09 01 01 09 09 07 09 01 09 02 01 09 09 08 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0 21 00 00 ac 21 00 00 ba 21 00 00 c8 21 00 00 .!...!...!...!..
e2 21 00 00 f6 21 00 00 08 22 00 00 1c 22 00 00 .!...!..."..."..
2c 22 00 00 00 00 00 00 4a 22 00 00 00 00 00 00 ,"......J"......
43 6c 6f 73 65 48 61 6e 64 6c 65 00 30 78 25 30 CloseHandle.0x%0
38 58 2c 20 30 78 25 30 38 58 3a 20 30 78 25 30 8X, 0x%08X: 0x%0
38 58 20 30 78 25 30 38 58 20 30 78 25 30 38 58 8X 0x%08X 0x%08X
20 30 78 25 30 38 58 0a 00 00 00 00 4c 65 61 66 0x%08X.....Leaf
2c 20 20 20 20 20 20 20 53 75 62 4c 65 61 66 3a , SubLeaf:
20 20 20 20 45 41 58 20 20 20 20 20 20 20 20 45 EAX E
42 58 20 20 20 20 20 20 20 20 45 43 58 20 20 20 BX ECX
20 20 20 20 20 45 44 58 0a 00 00 00 53 65 74 54 EDX....SetT
68 72 65 61 64 49 64 65 61 6c 50 72 6f 63 65 73 hreadIdealProces
73 6f 72 00 00 00 00 00 43 41 56 45 41 54 3a 20 sor.....CAVEAT:
73 6f 6d 65 20 66 6c 61 67 73 20 64 69 66 66 65 some flags diffe
72 20 69 6e 20 33 32 2d 62 69 74 20 6d 6f 64 65 r in 32-bit mode
20 66 72 6f 6d 20 6e 61 74 69 76 65 20 36 34 2d from native 64-
62 69 74 20 6d 6f 64 65 21 0a 00 00 49 73 57 6f bit mode!...IsWo
77 36 34 50 72 6f 63 65 73 73 00 00 25 73 28 29 w64Process..%s()
20 72 65 74 75 72 6e 65 64 20 65 72 72 6f 72 20 returned error
25 75 0a 00 70 21 00 00 00 00 00 00 00 00 00 00 %u..p!..........
3c 22 00 00 00 20 00 00 98 21 00 00 00 00 00 00 <"... ...!......
00 00 00 00 58 22 00 00 28 20 00 00 00 00 00 00 ....X"..( ......
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0 21 00 00 ac 21 00 00 ba 21 00 00 c8 21 00 00 .!...!...!...!..
e2 21 00 00 f6 21 00 00 08 22 00 00 1c 22 00 00 .!...!..."..."..
2c 22 00 00 00 00 00 00 4a 22 00 00 00 00 00 00 ,"......J"......
25 05 57 72 69 74 65 46 69 6c 65 00 19 01 45 78 %.WriteFile...Ex
69 74 50 72 6f 63 65 73 73 00 52 00 43 6c 6f 73 itProcess.R.Clos
65 48 61 6e 64 6c 65 00 95 04 53 65 74 54 68 72 eHandle...SetThr
65 61 64 49 64 65 61 6c 50 72 6f 63 65 73 73 6f eadIdealProcesso
72 00 c4 01 47 65 74 43 75 72 72 65 6e 74 54 68 r...GetCurrentTh
72 65 61 64 00 00 0e 03 49 73 57 6f 77 36 34 50 read....IsWow64P
72 6f 63 65 73 73 00 00 c0 01 47 65 74 43 75 72 rocess....GetCur
72 65 6e 74 50 72 6f 63 65 73 73 00 02 02 47 65 rentProcess...Ge
74 4c 61 73 74 45 72 72 6f 72 00 00 64 02 47 65 tLastError..d.Ge
74 53 74 64 48 61 6e 64 6c 65 00 00 4b 45 52 4e tStdHandle..KERN
45 4c 33 32 2e 64 6c 6c 00 00 34 03 77 76 73 70 EL32.dll..4.wvsp
72 69 6e 74 66 41 00 00 55 53 45 52 33 32 2e 64 rintfA..USER32.d
6c 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ll..............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Decode the dump file RAWCPUID.TXT
created in
step 3. to recreate the console application
RAWCPUID.COM:
CERTUTIL.EXE /DecodeHex /V RAWCPUID.TXT RAWCPUID.COM
Input Length = 19584 Output Length = 4608 CertUtil: -decodehex command completed successfully.
Finally execute the console application RAWCPUID.COM
built in step 2.:
.\RAWCPUID.COM
CAVEAT: some flags differ in 32-bit mode from native 64-bit mode! Leaf, SubLeaf: EAX EBX ECX EDX 0x00000000, 0x00000000: 0x0000000D 0x756E6547 0x6C65746E 0x49656E69 0x00000001, 0x00000000: 0x0001067A 0x00020800 0x0C08E3FD 0xBFEBFBFF 0x00000002, 0x00000000: 0x05B0B101 0x005657F0 0x00000000 0x2CB43048 0x00000004, 0x00000000: 0x04000121 0x01C0003F 0x0000003F 0x00000001 0x00000004, 0x00000001: 0x04000122 0x01C0003F 0x0000003F 0x00000001 0x00000004, 0x00000002: 0x04004143 0x02C0003F 0x00000FFF 0x00000001 0x00000005, 0x00000000: 0x00000040 0x00000040 0x00000003 0x03122220 0x00000006, 0x00000000: 0x00000003 0x00000002 0x00000003 0x00000000 0x00000008, 0x00000000: 0x00000400 0x00000000 0x00000000 0x00000000 0x0000000A, 0x00000000: 0x07280202 0x00000000 0x00000000 0x00000503 0x0000000D, 0x00000000: 0x00000003 0x00000240 0x00000240 0x00000000 0x80000000, 0x00000000: 0x80000008 0x00000000 0x00000000 0x00000000 0x80000001, 0x00000000: 0x00000000 0x00000000 0x00000001 0x20100000 0x80000002, 0x00000000: 0x65746E49 0x2952286C 0x726F4320 0x4D542865 0x80000003, 0x00000000: 0x44203229 0x43206F75 0x20205550 0x50202020 0x80000004, 0x00000000: 0x30303738 0x20402020 0x33352E32 0x007A4847 0x80000006, 0x00000000: 0x00000000 0x00000000 0x0C006040 0x00000000 0x80000008, 0x00000000: 0x00003024 0x00000000 0x00000000 0x00000000
CPUPRINT.COM
and
CPUPRINT.EXE
are
digitally signed
using a (self-issued)
X.509
leaf certificate
and
time stamped.
Download and install the (self-signed) X.509 root certificate to validate and verify the digital certificate and the signature.
Use the X.509 certificate to send S/MIME encrypted mail.
Note: email in weird format and without a proper sender name is likely to be discarded!
I dislike
HTML (and even
weirder formats too) in email, I prefer to receive plain text.
I also expect to see your full (real) name as sender, not your
nickname.
I abhor top posts and expect inline quotes in replies.
as iswithout any warranty, neither express nor implied.
cookiesin the web browser.
The web service is operated and provided by
Telekom Deutschland GmbH The web service provider stores a session cookie
in the web
browser and records every visit of this web site with the following
data in an access log on their server(s):