获取CPUID
来源:互联网 发布:数据库防护系统 编辑:程序博客网 时间:2024/05/17 06:38
用CPUID指令,首先你可以确定你用的CPU是Intel的。然后执行:
MOV EAX,01H
CPUID
如果返回的EDX中,低18位为1,那么这个CPU就是支持序列号的。此时EAX就是序列号的高32位。这32位对同一型号的CPU是一样的。再执行:
MOV EAX,03H
CPUID
此时的EDX:ECX就是序列号的第64位。 要想关闭这个ID,可执行下列代码:
MOV ECX,119H
RDMSR
OR EAX,00200000H
WRMSR
不过,一旦执行上述代码,cpu 将一直不能取id,直到下次 reset。
// getcpuid.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char sel;
printf("Select the function:/n1-------Read CPU id./n2-------Disable CPU id./n");
sel=getch();
switch(sel)
{
case '1':
_asm
{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
printf("%s-",vendor_id);
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
printf("%08X/n%08X-",s1,s2);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
printf("%08X-%08X/n",s1,s2);
break;
case '2':
_asm{
mov ecx,119h
rdmsr
or eax,00200000h
wrmsr
}
printf("CPU id is disabled./n");
break;
}
return 0;
}
- 获取cpuid
- 获取CPUID
- 获取CPUID
- 获取CPUID
- 获取CPUID信息
- 获取CPUID信息
- C#-获取CPUID
- Delphi 获取CPUID和制造商
- Delphi通过汇编获取CPUID
- 通过CPUid获取CPU信息
- 汇编语言程序设计-01:获取cpuid
- lua 获取CPU序列号/cpuid
- CPUID
- CPUID
- 用cpuid指令获取cpu信息
- 用cpuid指令获取cpu信息
- VC获取硬盘序列号 网卡 cpuid bios
- 一个全面获取Intel CPUID的代码
- asp.net MVC使用kindeditor编辑器
- 网络编程之KeepAlive vs. heart-beat
- 山东省第二届ACM省赛 F题 Manhattan 解题报告
- VC6 编程问题记录
- POJ1065 Wooden Sticks(贪心+动态规划——单调递增子序列)
- 获取CPUID
- 用例图之我见
- 电气基础知识问答(特别适合初学者)
- 第一章、jms介绍--开篇
- PC机与mini2440 arm开发板的文件传输/通讯小结
- 程序员必须要看的 一个从事十年开发软件工程师对职业理解
- 3 .做一个自己的截图软件
- [C#]激活并刷新已运行例程 --> EXE
- 《Spring技术内幕》学习笔记13——SqlMapClientTemplate对Ibatis的封装