给定一个CPU型号,如何生成对应的cpuid指令注意不是获取是生成 !

给定一个CPU型号,如何生成对应的cpuid指令注意不是获取是生成 !,第1张

CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西。

比如生成查询CPU的制造商信息(Vender ID String)的代码:

string CPUID::GetVID()

{

char cVID[13]; // 字符串,用来存储制造商信息

memset(cVID, 0, 13); // 把数组清0

Executecpuid(0); // 执行cpuid指令,使用输入参数 eax = 0

memcpy(cVID, &m_ebx, 4); // 复制前四个字符到数组

memcpy(cVID+4, &m_edx, 4); // 复制中间四个字符到数组

memcpy(cVID+8, &m_ecx, 4); // 复制最后四个字符到数组

return string(cVID); // 以string的形式返回

}

每个型号的地址不一样的,但做软件加密时不要直接地址,不然很容易被破解

#define SOC_STM32F0_ID_ADDR 0x1FFFF7AC

#define SOC_STM32F1_ID_ADDR 0x1FFFF7E8

#define SOC_STM32F2_ID_ADDR 0x1FFF7A10

#define SOC_STM32F3_ID_ADDR 0x1FFFF7AC

#define SOC_STM32F4_ID_ADDR 0x1FFF7A10

#define SOC_STM32F7_ID_ADDR 0x1FF0F420

#define SOC_STM32L0_ID_ADDR 0x1FF80050

#define SOC_STM32L1_ID_ADDR 0x1FF80050

#define SOC_STM32L4_ID_ADDR 0x1FFF7590

#define SOC_STM32H7_ID_ADDR 0x1FF0F420

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870

2, 利用校验和或是crc对程序区进行校验,防止改程序

#include<stdioh>

#include<stdlibh>

#include<timeh>

int main()

{

srand(time(0));

for(int i=0;i<10;i++)

printf("%3d",rand()%100+1);

printf("\n");

return 0;

}

生成10个1-100的随机整数。

以上就是关于给定一个CPU型号,如何生成对应的cpuid指令注意不是获取是生成 !全部的内容,包括:给定一个CPU型号,如何生成对应的cpuid指令注意不是获取是生成 !、如何获得stm32 cpu的唯一ID、在c语言中如何取得cpuid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9461475.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存