更改CPUID思路整理

CPUID是个汇编指令来的....不依赖API..

VIA有几款CPU是可以自己决定CPUID的
支持VT技术的CPU 可以在VMM 中修改相应的寄存器,达到修改CPUID返回值 的效果.


确保CPU 支持INTEL VMX 技术,将VMXCPU加载后,再运行CPU-Z之类的软件,就发现不同了.

上传的附件
文件类型: zipvmxcpu.zip (34.0 KB, 356 次下载)[谁下载?]
要改cpuid的返回值,一般只有path了.在执行完cpuid指令后,更改寄存器的值,可以实现


cpuid一般不是唯一了,如果采用cpuid作为License验证的话,cpuid应该只是其中的一个因素而已,应该还会有其它的,比如硬盘序列号、MAC地址等一起构成一个计算机唯一标识;


网络检索有文章提及使用下面这个小工具更改PCCA (PHYSICAL CONFIGURATION COMMUNICATION AREA)中的PCCACPID,可以绕过CPUID检查:

*   TO USE THIS PGM, FIRST, CODE A PROC IN SYS1.PROCLIB                 SPG00090
*                                                                       SPG00090
* //CHGCPUID  PROC                                                      SPG00090
* //   EXEC PGM=CPUID,PARM='NNNNTTTT'                                   SPG00090
*                                                                       SPG00090
*          THE PARM IS UUP TO EIGHT DIGITS AS FOLLOWS;                  SPG00090
*                                                                       SPG00090
*           NNNN = LAST FOUR CHARACTERS OF THE DESIRED CPUID            SPG00090
*           TTTT = CPU TYPE E.G. 9672 (OPTIONAL)                        SPG00090
*                                                                       SPG00090
*                                                                       SPG00090
* NEXT, ASSEMBLE AND LINK INTO AN AUTHORIZED, LINKLISTED LIB            SPG00090
* WHICH WILL ALWAYS BE ON TEST SYSTEM  (SUCH AS SYS1.CMDLIB)            SPG00090
*                                                                       SPG00090
* IN SYS1.PARMLIB MEMBER(IEACMD00) AFTER S LLA STMT                     SPG00090
*  CODE  START CHGCPUID,SUB=MSTR                                        SPG00090
*                                                                               
*  FROM A SYSTEM CONSOLE, AFTER CHGCPUID ENDS, ISSUE COMMAND                    
*  D M=CPU   AND NOTE THAT ALL CPUIDS SHOW 9672 AS MODEL                        
*                                                                               
*********************************************************************** SPG01350
*                                                                       SPG01360
CPUID    CSECT 0                                                        SPG01370
CPUID    AMODE 31                                                       SPG01370
CPUID    RMODE 24                                                       SPG01370
         PGMIN EQUATES=YES,USING=(R13) STANDARD HOUSEKEEPING                    
         GETAUTH TYPE=GET          ENSURE WE ARE AUTHORISED                     
         GOSUB PARMPROC            TEST PARM VALUE                              
         LTR   R15,R15             WAS PARM VALID?                              
         BNZ   ERROR               NO, GIVE UP                                  
         MODESET KEY=ZERO          * KEY ZERO                           SPG03340
         L     R3,16               * ADDRESS CVT                                
         USING CVT,R3                                                           
         L     R2,CVTPCCAT         * --> PCCA VECTOR TABLE (CVT+2FC)            
         USING PCCAVT,R2                                                        
         LA    R6,PCCAT00P         * --> PCCA FOR CPU 0                         
         DROP  R2                                                               
         LA    R7,16               * LOOP CTR ( MAX OF 16 CPUS)                 
         L     R1,PARMADDR         REFRESH PARM ADDRESS                         
         L     R2,PARMLGTH         GET PARM LENGTH                      00071400
         BCTR  R2,0                DECREMENT FOR EXECUTE                00071700
         SPACE 1                                                        00070800
LOOP     DS    0H                                                               
         ICM   R3,15,0(R6)         * --> PCCA                                   
         BNZ   TESTIT              * THERE IS ONE                               
BUMP     DS    0H                                                               
         LA    R6,4(R6)            * TO NEXT PCCA ADDRESS                       
         BCT   R7,LOOP             * LOOP TILL DONE                             
         B     FINISHED            * THEN QUIT                                  
*                                                                               
TESTIT   DS    0H                                                               
         USING PCCA,R3                                                          
         CLC   PCCAPCCA,=CL4'PCCA' * MAKE SURE IT IS PCCA                       
         BNE   ERROR               * PROBLEM SOMEWHERE???                       
*        MVC   PCCACPID+8(4),=C'9672'     * NEW MODEL NO.                       
*        MVC   PCCACPID+4(8),=C'70249021' * NEW CPUID                           
         LA    R4,PCCACPID+4       POINT PAST CP & LPAR NO.                     
         EX    R2,PARMMOVE         COPY PARM TO CPUID                           
         B     BUMP                * LOOP TILL DONE                             
         DROP  R3                                                               
*                                                                               
FINISHED DS    0H                                                               
         WTO   'CPU IDS HAVE BEEN CHANGED '                                     
         B     EXIT                                                             
*                                                                               
ERROR    DS    0H                                                               
         WTO   'ERROR IN PGM CPUID'                                             
*                                                                               
EXIT     DS    0H                                                               
         MODESET KEY=NZERO         USER STATUS                          SPG03380
         PGMOUT ,                  RETURN TO CALLER                             
         EJECT ,                                                        00070100
*******************************************************************     00070200
*        PROCESS PARM FIELD IF SUPPLIED                           *     00070300
*******************************************************************     00070700
         SPACE 1                                                        00070800
PARMPROC DS    0H                  PROCESS PARM FIELD                   00070900
         SUBIN SAVE=(R4)           SUBROUTINE ENTRY                     00071000
         SR    R15,R15             ASSUME PARM IS GOOD                          
         L     R1,0(R1)            LOAD ADDRESS OF PARM INTO R1         00071100
         ST    R1,PARMADDR         STORE ADDRESS OF PARM INFO'S         00071200
         LH    R2,0(R1)            GET ADDRESS OF PARM INFO'S           00071300
         ST    R2,PARMLGTH         SAVE PARM LENGTH                     00071400
         LTR   R2,R2               TEST FOR A PARM                      00071500
         BZ    PARMBAD             NONE, ERROR                          00071600
         C     R2,=A(8)            TEST MAXIMUM LENGTH                          
         BH    PARMBAD             TOO LONG, ERROR                              
         BCTR  R2,0                DECREMENT FOR EXECUTE                00071700
         SPACE 1                                                        00071900
PARMLOOP DS    0H                  TEST PARM VALUES                     00072000
         EX    R2,PARMCLC          TEST FOR NUMERIC                     00072100
         BH    PARMDONE            OK, USE IT                           00072400
*        B     PARMBAD             NO, BAD VALUE                        00072200
         SPACE 1                                                        00072900
PARMBAD  DS    0H                  PARM FIELD INVALID                   00073000
         LA    R15,8               REMEMBER WE FAILED                           
PARMDONE DS    0H                  PARM FIELD PROCESSED                 00073000
         SUBOUT RESTORE=(R4)       RETURN TO CALLER                     00073100
         TITLE 'DATA AREAS'                                             00070100
PARMCLC  CLC   2(*-*,R1),=CL8'00000000' TEST FOR NUMERIC   *EXECUTED*   00073300
PARMMOVE MVC   0(*-*,R4),2(R1)     MOVE PARM TO PCCACPID   *EXECUTED*   00073300
         SPACE 1                                                        00073400
PARMADDR DC    A(0)                ADDRESS OF PARM FIELD                00073500
PARMLGTH DC    A(0)                LENGTH OF PARM FIELD                 00073600
         LTORG ,                                                                
*                                                                       SPG07150
         CVT   LIST=NO,DSECT=YES                                                
         IHAPCCAT DSECT=YES                                                     
         IHAPCCA  DSECT=YES                                                     
         END

需要在SYS1.PROCLIB 增加 CHGCPUID,然后,编译汇编程序CPUID放入APF,LINKLISTED库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值