找回密码
注册 登录
查看: 633|回复: 2

[PECMD开发] 分享读取TPM模块完整PECMD代码

[复制链接]
  • TA的每日心情

    2017-11-24 01:58
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2021-10-28 15:55:13 | 显示全部楼层 |阅读模式
    1. CALL GetTPMInfos "%&SystemROOT%\System32\tbs.dll" &&HaveTPM &&TPM_VERSION &&TPM_Type
    2. MESS. <%&&HaveTPM%><%&&TPM_VERSION%><%&&TPM_Type%>
    3. _SUB GetTPMInfos
    4.     ENVI-ret %~2=UnKnown
    5.     ENVI-ret %~3=
    6.     ENVI-ret %~4=
    7.     CALL $--ret:&&htbs --cd ,-LoadLibrary,^%~1
    8.     //MESS. %&&htbs%
    9.     IFEX #%&&htbs%=0,EXIT
    10.     ENVI &&htbs=*%&&htbs%
    11.     ENVI &&TBS_SUCCESS=0    //0x0   功能成功。
    12.     ENVI &&TBS_E_BAD_PARAMETER=2150121474   //0x80284002    一个或多个参数值无效。
    13.     ENVI &&TBS_E_TPM_NOT_FOUND=2150121487   //0x8028400F    在此计算机上找不到兼容的可信平台模块 (TPM) 安全设备。
    14.     ENVI &&TPM_DEVICE_INFO.Size=16
    15.     ENVI$# &&TPM_DEVICE_INFO=*%&&TPM_DEVICE_INFO.Size% 0
    16.     CALL $--qd --ret:&&Tbsi_GetDeviceInfoRet %&&htbs%,Tbsi_GetDeviceInfo,#%&&TPM_DEVICE_INFO.Size%,*&&TPM_DEVICE_INFO
    17.     FIND *=&&Tbsi_GetDeviceInfoRet,
    18.     {*
    19.         ENVI-ret %~2=UnKnown
    20.     }!  
    21.     {*
    22.         IFEX #%&&Tbsi_GetDeviceInfoRet%=%&&TBS_SUCCESS%,
    23.         {*
    24.             ENVI-ret %~2=Exist
    25.             //MESS. %&&Tbsi_GetDeviceInfoRet%
    26.             
    27.             ENVI &&TPM_VERSION_UNKNOWN=0
    28.             ENVI &&TPM_VERSION_12=1
    29.             ENVI &&TPM_VERSION_20=2
    30.             
    31.             ENVI &&TPM_IFTYPE_UNKNOWN=0
    32.             ENVI &&TPM_IFTYPE_1=1 // for 1.2 - use I/O-port or MMIO
    33.             ENVI &&TPM_IFTYPE_TRUSTZONE=2 // 2.0: Trustzone
    34.             ENVI &&TPM_IFTYPE_HW=3 // 2.0: HW TPM
    35.             ENVI &&TPM_IFTYPE_EMULATOR=4 // 2.0: SW-emulator
    36.             ENVI &&TPM_IFTYPE_SPB=5 // 2.0: SPB attached
    37.             
    38.             ENVI?int &&TPM_DEVICE_INFO=&&structVersion
    39.             ENVI?int &&TPM_DEVICE_INFO=&&tpmVersion:~1
    40.             IFEX #%&&tpmVersion%=%&&TPM_VERSION_UNKNOWN%,
    41.             {*
    42.                 ENVI-ret %~3=UnKnownVersion
    43.             }!  
    44.             {*
    45.                 IFEX #%&&tpmVersion%=%&&TPM_VERSION_12%,
    46.                 {*
    47.                     ENVI-ret %~3=1.2
    48.                 }!  
    49.                 {*
    50.                     IFEX #%&&tpmVersion%=%&&TPM_VERSION_20%,
    51.                     {*
    52.                         ENVI-ret %~3=2.0
    53.                     }!  
    54.                     {*
    55.                         ENVI-ret %~3=%&&tpmVersion%
    56.                     }
    57.                 }
    58.             }
    59.             ENVI?int &&TPM_DEVICE_INFO=&&tpmInterfaceType:~2
    60.             IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_UNKNOWN%,
    61.             {*
    62.                 ENVI-ret %~4=UnKnownType
    63.             }!  
    64.             {*
    65.                 IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_1%,
    66.                 {*
    67.                     ENVI-ret %~4=1.2 - use I/O-port or MMIO
    68.                 }!  
    69.                 {*
    70.                     IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_TRUSTZONE%,
    71.                     {*
    72.                         ENVI-ret %~4=2.0: Trustzone
    73.                     }!  
    74.                     {*
    75.                         IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_HW%,
    76.                         {*
    77.                             ENVI-ret %~4=2.0: HW TPM
    78.                         }!  
    79.                         {*
    80.                             IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_EMULATOR%,
    81.                             {*
    82.                                 ENVI-ret %~4=2.0: SW-emulator
    83.                             }!  
    84.                             {*
    85.                                 IFEX #%&&tpmVersion%=%&&TPM_IFTYPE_SPB%,
    86.                                 {*
    87.                                     ENVI-ret %~4=2.0: SPB attached
    88.                                 }
    89.                             }
    90.                         }
    91.                     }
    92.                 }
    93.             }
    94.             ENVI?int &&TPM_DEVICE_INFO=&&tpmImpRevision:~3
    95.             //MESS. <%&structVersion%><%&tpmVersion%><%&tpmInterfaceType%><%&tpmImpRevision%>
    96.         }!  
    97.         {*
    98.             IFEX #%&&Tbsi_GetDeviceInfoRet%=%&&TBS_E_TPM_NOT_FOUND%,
    99.             {*
    100.                 ENVI-ret %~2=Not exist
    101.             }
    102.         }
    103.     }
    104. _END
    复制代码






    上一篇:V5全能版和V6特别版如何选择???
    下一篇:那个版本V5维护好用些
  • TA的每日心情
    开心
    昨天 06:59
  • 签到天数: 2089 天

    [LV.Master]伴坛终老

    发表于 2021-10-28 23:15:11 | 显示全部楼层
    感谢楼主分享!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:45
  • 签到天数: 2616 天

    [LV.Master]伴坛终老

    发表于 2021-10-29 13:15:49 | 显示全部楼层
    隔行如隔山啊,看不懂有能力的朋友拿去测试
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则