首页
社区
课程
招聘
cpuid返回的信息可以修改吗?
发表于: 2005-4-19 21:10 10889

cpuid返回的信息可以修改吗?

2005-4-19 21:10
10889
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
返回后你再改不就完了。或者根本就不去调用这个指令,改成自己喜欢的什么指令,不就完了:)
2005-4-20 16:07
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
斌值即可~~~
2005-4-20 20:40
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有什么可行的方法吗?
2005-4-20 21:45
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你的意思:
有一个cpuid返回信息和对应的注册码,
把你自己的cpuid返回的信息改成上面的,就能用了?
不行吧
2005-4-23 23:50
0
雪    币: 4908
活跃值: (2343)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
最初由 awuawu 发布
有什么方法可以让CPUID返回你所需要的值


想问一下CPUID是个API函数吗?

如果不用驱动调用,其他方法怎么得到CPU 的ID?
2005-4-24 15:10
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
获取CPU ID  ,奔腾4以上的CPUID,intel不提供了

#include <windows.h>
#include <stdio.h>
       
// Processor Type 处理器类型,表示的是 CPU 是由消费者自己安装还是专业人员安装
// Family Code 处理器系列,表示的是第几代产品
// Model Number 处理器的型号,表示的是 CPU 的制造技术和属于第几代的设计
// Stepping ID 步进ID,表示的是 Intel 内部设计和制造的标准
typedef struct
{
        DWORD SteppingID:4;                // 00000000 00000000 00000000 00001111
        DWORD ModelNumber:4;        // 00000000 00000000 00000000 11110000
        DWORD FamilyCode:4;                // 00000000 00000000 00001111 00000000
        DWORD ProcessorType:2;        // 00000000 00000000 00110000 00000000
        DWORD Reserved1:2;                // 00000000 00000000 xx000000 00000000
        DWORD ExtendedModel:4;        // 00000000 00001111 00000000 00000000
        DWORD ExtendedFamily:8;        // 00001111 11110000 00000000 00000000
        DWORD Reserved2:4;                // xxxx0000 00000000 00000000 00000000
} PROCESSOR_SIGNATURE;

// Brand ID
// 在 Pentium III 处理器之后,为了区分"型号=8"的不同处理器
// 引入了这个附加的商标ID,如果这个值为0,表示 CPU 不支持商标ID
typedef struct
{
        DWORD BrandID:8;
        DWORD Chunks:8;
        DWORD Count:8;
        DWORD APIC_ID:8;
} MISC_INFO;

typedef struct
{
        DWORD FPU:1;        // 位0,  是否内置浮点协处理器
        DWORD VME:1;        // 位1,  是否支持扩展的虚拟8086模式
        DWORD DE:1;                // 位2,  是否支持调试扩展,I/O 类型断点
        DWORD PSE:1;        // 位3,  是否支持 4M 分页
        DWORD TSC:1;        // 位4,  是否支持 TSC(时间标签记数器)
        DWORD MSR:1;        // 位5,  是否支持 MSR(模式特别积存器)
        DWORD PAE:1;        // 位6,  是否支持物理地址扩展,物理地址可以大于 4G
        DWORD MCE:1;        // 位7,  是否支持异常检测
        DWORD CX8:1;        // 位8,  是否支持 CMPXCHG 指令(比较并交换 8 字节)
        DWORD APIC:1;        // 位9,  是否包含片内级可编程中断控制器(APIC)
        DWORD Rvsd1:1;        // 位10, 保留位
        DWORD SEP:1;        // 位11, 是否支持快速系统调用 SYSENTER 和 SYSEXIT 指令
        DWORD MTRR:1;        // 位12, 是否支持指定内存类型范围积存器
        DWORD PGE:1;        // 位13, 是否支持页全局标志位
        DWORD MCA:1;        // 位14, 是否支持全局检查架构
        DWORD CMOV:1;        // 位15, 是否支持 CMOV 指令
        DWORD PAT:1;        // 位16, 是否支持页属性表
        DWORD PSE36:1;        // 位17, 是否支持 36 位物理地址总线
        DWORD PSN:1;        // 位18, 是否支持序列号,并且此功能是开放状态
        DWORD CLFSH:1;        // 位19, 是否支持 CLFLUSH 指令
        DWORD Rvsd2:1;        // 位20, 保留位
        DWORD DS:1;                // 位21, 是否支持调试存储
        DWORD ACPI:1;        // 位22, 是否支持温度监控和软件调整时钟频率
        DWORD MMX:1;        // 位23, 是否支持 MMX 指令
        DWORD FXSR:1;        // 位24, 是否支持快速浮点存取扩展指令
        DWORD SSE:1;        // 位25, 是否支持 SIMD 扩展指令
        DWORD SSE2:1;        // 位26, 是否支持 SIMD2 扩展指令
        DWORD SS:1;                // 位27, 是否支持自我侦听
        DWORD HTT:1;        // 位28, 是否支持超线程技术
        DWORD TM:1;                // 位29, 包含了温度监控和温度控制电路
        DWORD Rvsd3:1;        // 位30, 保留位
        DWORD SBF:1;        // 位31, Signal Break on FERR
} FEATURE_FLAGS;

// 处理器类型(Processor Type)
char List_ProcessorType[4][80] =
{
        "Original OEM Processor",                // 00
        "Intel OverDrive Processor",        // 01
        "Dual processor",                                // 10
        "Intel reserved"                                // 11
};

void VendorInfo()
{
        char vendor_id[13];

        memset(vendor_id, 0, 13);
        _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\n",vendor_id);
}

void Signature_Feature()
{
        PROCESSOR_SIGNATURE ps;
        FEATURE_FLAGS ff;
        MISC_INFO mi;

        _asm
        {
                mov eax, 1
                cpuid
                mov ps, eax
                mov mi, ebx
                mov ff, edx
        }

        printf("Processor Type: %d\n", ps.ProcessorType);
        printf("Model Number: %d\n", ps.ModelNumber);
        printf("Family Code: %d\n", ps.FamilyCode);
        printf("Extended Model: %d\n", ps.ExtendedModel);
        printf("Extended Family: %d\n", ps.ExtendedFamily);
        printf("Stepping ID: %d\n", ps.SteppingID);
        printf("Brand ID: %d\n", mi.BrandID);

        if (ff.MMX) printf("Support MMX\n");
        if (ff.SSE) printf("Support SSE\n");
        if (ff.SSE2) printf("Support SSE2\n");
        if (ff.PSN) printf("Support processor serial number\n");
}

void main()
{
        VendorInfo();
        Signature_Feature();

/*
        unsigned long s1,s2;

        _asm mov eax,01h
        _asm xor edx,edx
        _asm cpuid
        _asm mov s1,edx
        _asm mov s2,eax
        printf("%08X\n%08X-",s1,s2);
        _asm mov eax,03h
        _asm xor ecx,ecx
        _asm xor edx,edx
        _asm cpuid
        _asm mov s1,edx
        _asm mov s2,ecx
        printf("%08X-%08X\n",s1,s2); */
}
2005-4-25 14:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 jianlizhao 发布
获取CPU ID ,奔腾4以上的CPUID,intel不提供了


........


应该只是那个唯一的序列号不提供吧。

CPUID这条指令是不太可能取消的。只是这个指令可以返回很多级别的信息。
eax=0时,就是返回CPU厂家信息
eax=1时就是返回CPU的家族和型号。
...
2005-4-25 23:16
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
9
又没有工具像修改硬盘序列号那样修改CPU信息
2005-4-26 09:34
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不知道行不行
2005-4-27 21:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 awuawu 发布
不知道行不行

是否可以编写一段常驻程序来应付CPUID指令,并得到我想要的值
2005-5-7 21:51
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
12
CPUID返回的值好像不能那么容易就被修改吧,
修改硬件就行的,
在不更改CPU的情况下修改返回值是没有什么可能的
2005-5-8 00:02
0
游客
登录 | 注册 方可回帖
返回
//