机器码封了换主板还是硬盘_吃鸡开挂被封机器码?电脑机器码到底是什么?

我们在很多地方都可以看到电脑机器码这个东西,比如吃鸡开挂被封机器码、招投标作假被发现机器码雷同、商业软件通过机器码购买授权等等。机器码到底是什么?它是如何帮助识别电脑唯一性的?请看存储极客的介绍。

8d8b9b6877911b317063132a31bba984.png

网卡MAC地址、CPUID、硬盘序列号是最常用的三种硬件机器码。

CPUID:最不靠谱的机器码

先从CPUID说起,自从奔腾3处理器由于序列号唯一容易被追踪而引发泄露隐私的质疑后,英特尔从奔腾4开始就取消了唯一的CPU序列号。

665b05d7f24a83e64a17122b0445af91.png

现在的CPUID对应了某一代CPU,如果不用第三方软件的话可以在命令提示符中输入并执行wmic cpu get processorid,即可得到本机的CPUID信息。如图所示的CPUID可以对应英特尔酷睿i5 6600K,也同时对应i7 6700K或者i7 6700HQ,不但不是个体唯一,连具体型号都无法确定。

49ea09e86b1a7c35031c801f9cfe32fa.png

网卡MAC:难不倒DIYer

IP地址是很容易切换的,对于大多数非固定IP的家庭宽带而言,只要断开并重新拨号一次,就可以获得一个新的IP地址。但是网卡的MAC地址就不同了,它是网卡的物理地址,从设计上来说它应该是全球唯一的。

965d719b072a8fd922a71043073440e5.png

不过实际情况比较复杂,很多网卡的MAC地址是可以由用户自己修改的,要通过MAC地址来封杀机器码比较困难。

8f71b79c31d10fe12afbc74d16ff6051.png

硬盘序列号:终于来一个厉害的

硬盘序列号指的是CrystalDiskInfo中查看到的一串数字/字母混合的代码,他是由硬盘厂商在生产时就固化到固态硬盘当中的。下图所示是东芝TR200 960G固态硬盘的序列号,TR200是原厂SSD中的高性价比热门型号。

a62b4d4b6fbc0aa77a3c94a0f39bd0bf.png

当然硬盘序列号也有不靠谱的时候,有些山寨盘的序列号干脆就是固定一个数值,一批硬盘的序列号可能都是一模一样的,让人哭笑不得。下图是东芝TR200固态硬盘标签上的S/N序列号信息,与CrystalDiskInfo识别结果一致。

e4c07c49e36cb2a91a086fa20e8d1ada.png

除了序列号之外,比较专业的固态硬盘还会提供一个WWN识别码。WWN是World Wide Name全球统一名称的意思,通常是由权威组织分配的全球唯一的48位或64位编码。并不是所有固态硬盘都会提供WWN识别码,所以这个方法不一定适合作为机器码使用。下图是东芝SSD Utility工具箱软件识别到的TR200 WWN识别码信息。

bfd204ad84f8286297e9ac0a90eeff44.png

除此之外,硬盘中的每个分区还会有一个卷序列号,也就是俗称的分区序列号。这个序列号是在硬盘格式化时随机生成的,只要重新格式化就可以更换,属于非硬件机器码。

825251e6d76670a165a60ad2761f1794.png

内存序列号:不一定有

作为电脑三大件之一,内存也是可以拥有SN序列号信息的。但这只是"可以有",却并非"一定有"。

06b4b694010cc28e68e7987d0e8d37df.png

机器码是综合了硬件序列号以及电脑系统中的一些特征信息,比如主板型号、操作系统版本、用户名之后产生的一串信息码。机器码不是DNA或指纹那样的精确识别(不同人的重复率几乎为零),而更像人脸识别:长得像的,也不一定是同个人。对"长得像"的判断可以来自于多个方面,比如眼睛、鼻子、脸型、步态、习惯姿势等等。通过机器码生成算法的保密性,使得伪造机器码变得困难。

有些软件号称可以修改机器码,但对硬盘序列号等相对固化的硬件信息的手段比较有限,而且这类软件通常有传播病毒的隐患。建议大家还是要遵纪守法,公平竞赛,不要在作弊上花心思了。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字节码和机器码都是计算机可执行的指令集,但它们之间有很大的区别。 字节码是一种中间形式的代码,是Java源代码编译后生成的二进制文件,它并不是直接在计算机上运行的指令,而是由Java虚拟机(JVM)解释执行的。Java虚拟机是一个在操作系统上运行的应用程序,它能够将字节码翻译成机器码并执行。因此Java程序可以在任何支持Java虚拟机的平台上运行,这也是Java跨平台的主要原因之一。 机器码是计算机可以直接执行的指令集,它是由汇编语言编写的代码经过汇编器汇编后生成的二进制文件。机器码是一种特定的二进制编码,它是由计算机硬件所能直接识别和执行的。 举个例子,假设我们有一段Java代码: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 当我们把这段代码编译成字节码后,可以使用`javap`命令来查看它的内容: ``` $ javac HelloWorld.java $ javap -c HelloWorld.class Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String Hello, World! 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return } ``` 可以看到,这段字节码并不是直接可执行的指令,而是类似汇编语言的一种中间形式。当我们运行这个程序时,Java虚拟机会将字节码解释成机器码并执行。 相比之下,如果我们使用汇编语言编写这个程序,会得到以下的汇编代码: ``` section .data db 'Hello, World!', 10, 0 section .text global _start _start: ; write message to stdout mov eax, 4 mov ebx, 1 mov ecx, message mov edx, 14 int 0x80 ; exit mov eax, 1 xor ebx, ebx int 0x80 message: db 'Hello, World!', 10, 0 ``` 这段代码是直接可执行的汇编代码,它是由汇编器汇编后生成的二进制文件。当我们运行这个程序时,计算机可以直接执行这段机器码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值