精易论坛

标题: 获得可执行文件中的数字签名的相关信息 [打印本页]

作者: 大司命    时间: 2021-5-10 16:29
标题: 获得可执行文件中的数字签名的相关信息
  1. .版本 2

  2. .DLL命令 CryptQueryObject, 逻辑型, "Crypt32.dll", "CryptQueryObject"
  3.     .参数 dwObjectType, 整数型
  4.     .参数 pvObject, 字节集
  5.     .参数 dwExpectedContentTypeFlags, 整数型
  6.     .参数 dwExpectedFormatTypeFlags, 整数型
  7.     .参数 dwFlags, 整数型
  8.     .参数 pdwMsgAndCertEncodingType, 整数型, 传址
  9.     .参数 pdwContentType, 整数型, 传址
  10.     .参数 pdwFormatType, 整数型, 传址
  11.     .参数 phCertStore, 整数型, 传址
  12.     .参数 phMsg, 整数型, 传址
  13.     .参数 ppvContext, 整数型, 传址

  14. .DLL命令 CryptMsgGetParam, 逻辑型, "Crypt32.dll", "CryptMsgGetParam"
  15.     .参数 hCryptMsg, 整数型
  16.     .参数 dwParamType, 整数型
  17.     .参数 dwIndex, 整数型
  18.     .参数 pvData, 整数型
  19.     .参数 pcbData, 整数型, 传址

  20. .DLL命令 CryptDecodeObject, 逻辑型, "Crypt32.dll", "CryptDecodeObject"
  21.     .参数 dwCertEncodingType, 整数型
  22.     .参数 lpszStructType, 整数型
  23.     .参数 pbEncoded, 整数型
  24.     .参数 cbEncoded, 整数型
  25.     .参数 dwFlags, 整数型
  26.     .参数 pvStructInfo, 整数型
  27.     .参数 pcbStructInfo, 整数型, 传址

  28. .DLL命令 CertFindCertificateInStore, 整数型, "Crypt32.dll", "CertFindCertificateInStore"
  29.     .参数 hCertStore, 整数型
  30.     .参数 dwCertEncodingType, 整数型
  31.     .参数 dwFindFlags, 整数型
  32.     .参数 dwFindType, 整数型
  33.     .参数 pvFindPara, 整数型
  34.     .参数 pPrevCertContext, 整数型

  35. .DLL命令 CertCloseStore, 逻辑型, "Crypt32.dll", "CertCloseStore"
  36.     .参数 hCertStore, 整数型
  37.     .参数 dwFlags, 整数型

  38. .DLL命令 CertGetNameStringW, 整数型, "Crypt32.dll", "CertGetNameStringW"
  39.     .参数 pCertContext, 整数型
  40.     .参数 dwType, 整数型
  41.     .参数 dwFlags, 整数型
  42.     .参数 pvTypePara, 整数型
  43.     .参数 pszNameString, 整数型
  44.     .参数 cchNameString, 整数型

  45. .DLL命令 CryptMsgClose, 逻辑型, "Crypt32.dll", "CryptMsgClose"
  46.     .参数 hCryptMsg, 整数型

  47. .DLL命令 CertFreeCertificateContext, 逻辑型, "Crypt32.dll", "CertFreeCertificateContext"
  48.     .参数 pCertContext, 整数型
复制代码
  1. .版本 2

  2. .常量 CERT_QUERY_OBJECT_FILE, "1", , 此参数是指向一个以空字符结尾的Unicode字符串的指针,该字符串包含要查询的文件的路径和名称。
  3. .常量 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, "1024", , 内容是嵌入的PKCS#7签名消息。
  4. .常量 CERT_QUERY_FORMAT_FLAG_BINARY, "2", , 内容应以二进制格式返回。
  5. .常量 CMSG_SIGNER_INFO_PARAM, "6", , 返回有关消息签名者的信息。这包括签名者证书的颁发者和序列号,以及签名者证书的经过身份验证和未经身份验证的属性。要检索所有消息的签名的签名者的信息,请拨打CryptMsgGetParam变dwIndex从0到签名者减去一个数。
  6. .常量 LPTR, "64", , 结合使用LMEM_FIXED和LMEM_ZEROINIT
  7. .常量 SPC_SP_OPUS_INFO_OBJID, "“1.3.6.1.4.1.311.2.1.12”"
  8. .常量 X509_ASN_ENCODING, "1"
  9. .常量 PKCS_7_ASN_ENCODING, "65536"
  10. .常量 CERT_FIND_SUBJECT_CERT, "720896"
  11. .常量 CERT_NAME_SIMPLE_DISPLAY_TYPE, "4", , 遍历以下名称属性列表,并对第一次出现的名称使用“主题名称”或“主题备用名称”扩展名:szOID_COMMON_NAME,szOID_ORGANIZATIONAL_UNIT_NAME,szOID_ORGANIZATION_NAME或szOID_RSA_emailAddr。
  12. .常量 CERT_NAME_ISSUER_FLAG, "1", , 获取发行人的名字。如果未设置,则获取主题的名称。
  13. .常量 szOID_RSA_counterSign, "“1.2.840.113549.1.9.6”"
  14. .常量 PKCS7_SIGNER_INFO, "500", , 所述pvStructInfo参数是一个指向CMSG_SIGNER_INFO结构。
  15. .常量 szOID_RSA_signingTime, "“1.2.840.113549.1.9.5”"
复制代码
  
窗口程序集名保 留  保 留备 注
(未填写程序集名)   
变量名类 型数组备 注
变量名类 型数组备 注
文件的绝对路径字节集  
文件的绝对路径 = 编码_Ansi到Unicode (“C:\Program Files (x86)\360\360safe\360Safe.exe”, )
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
dwEncoding整数型 
dwContentType整数型 
dwFormatType整数型 
hStore整数型 
hMsg整数型 
bRet逻辑型 
dwSignerInfo整数型 
pSignerInfo整数型 
ProgPubInfo整数型 
pCertContext整数型 
CertInfo字节集 
ptr整数型 
pCounterSignerInfo整数型 
st日期时间型 
bRet = CryptQueryObject ( #CERT_QUERY_OBJECT_FILE, 文件的绝对路径, #CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, #CERT_QUERY_FORMAT_FLAG_BINARY, 0, dwEncoding, dwContentType, dwFormatType, hStore, hMsg, #NULL )
bRet = CryptMsgGetParam (hMsg, #CMSG_SIGNER_INFO_PARAM, 0, #NULL, dwSignerInfo)
pSignerInfo = LocalAlloc ( #LPTR, dwSignerInfo)
bRet = CryptMsgGetParam (hMsg, #CMSG_SIGNER_INFO_PARAM, 0, pSignerInfo, dwSignerInfo)
GetProgAndPublisherInfo (pSignerInfo, ProgPubInfo)
CertInfo = 取空白字节集 (112)
ptr = 取指针_字节集型 (CertInfo)
' 签名者信息
memcpy (ptr + 24, pSignerInfo + 4, 8)
memcpy (ptr + 4, pSignerInfo + 12, 8)
pCertContext = CertFindCertificateInStore (hStore, 位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), 0, #CERT_FIND_SUBJECT_CERT, ptr, #NULL )
如果真 (pCertContext ≠ 0)
PrintCertificateInfo (pCertContext)
CertFreeCertificateContext (pCertContext)
GetDateOfTimeStamp (pSignerInfo, st)
输出调试文本 (“签名时间: ”时间_到文本 (st, 1, , ))
' 副署
如果真 (GetTimeStampSignerInfo (pSignerInfo, pCounterSignerInfo))
memcpy (ptr + 24, pCounterSignerInfo + 4, 8)
memcpy (ptr + 4, pCounterSignerInfo + 12, 8)
pCertContext = CertFindCertificateInStore (hStore, 位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), 0, #CERT_FIND_SUBJECT_CERT, ptr, #NULL )
如果真 (pCertContext ≠ 0)
PrintCertificateInfo (pCertContext)
CertFreeCertificateContext (pCertContext)
GetDateOfTimeStamp (pCounterSignerInfo, st)
输出调试文本 (“签名时间: ”时间_到文本 (st, 1, , ))
如果真 (pSignerInfo ≠ 0)
LocalFree (pSignerInfo)
如果真 (pCounterSignerInfo ≠ 0)
LocalFree (pCounterSignerInfo)
如果真 (hStore ≠ 0)
CertCloseStore (hStore, 0)
如果真 (hMsg ≠ 0)
CryptMsgClose (hMsg)
子程序名返回值类型公开备 注
GetProgAndPublisherInfo逻辑型 
参数名类 型参考可空数组备 注
pSignerInfo整数型
Info整数型
变量名类 型静态数组备 注
dwAttr整数型 
rgAttr整数型 
pszObjId整数型 
rgValue整数型 
dwData整数型 
bRet逻辑型 
OpusInfo整数型 
n整数型 
dwAttr = 指针_到整数 (pSignerInfo + 52)
rgAttr = 指针_到整数 (pSignerInfo + 56)
计次循环首 (dwAttr, n)
pszObjId = 指针_到整数 (rgAttr + (n - 1) × 12)
如果真 ( #SPC_SP_OPUS_INFO_OBJID指针到文本 (pszObjId))
rgValue = 指针_到整数 (rgAttr + (n - 1) × 12 + 8)
bRet = CryptDecodeObject (位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), 取指针_文本型 ( #SPC_SP_OPUS_INFO_OBJID ), 指针_到整数 (rgValue + 4), 取指针整数_ (rgValue), 0, #NULL, dwData)
OpusInfo = LocalAlloc ( #LPTR, dwData)
bRet = CryptDecodeObject (位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), 取指针_文本型 ( #SPC_SP_OPUS_INFO_OBJID ), 指针_到整数 (rgValue + 4), 取指针整数_ (rgValue), 0, OpusInfo, dwData)
LocalFree (OpusInfo)
返回 ()

计次循环尾 ()
返回 ()
子程序名返回值类型公开备 注
PrintCertificateInfo逻辑型 
参数名类 型参考可空数组备 注
pCertContext整数型
变量名类 型静态数组备 注
pCertInfo整数型 
szBuf文本型 
pbData整数型 
dwData整数型 
szName字节集 
n整数型 
pCertInfo = 指针_到整数 (pCertContext + 12)
dwData = 指针_到整数 (pCertInfo + 4)
szBuf = 取空白文本 (dwData × 2)
pbData = 取指针_文本型 (szBuf)
计次循环首 (dwData, n)
pbData = pbData + sprintf (pbData, “%02x”, __get_byte (指针_到整数 (pCertInfo + 8), dwData - n))
计次循环尾 ()
输出调试文本 (“序列号: ” + szBuf)
dwData = CertGetNameStringW (pCertContext, #CERT_NAME_SIMPLE_DISPLAY_TYPE, #CERT_NAME_ISSUER_FLAG, #NULL, #NULL, 0)
szName = 取空白字节集 (dwData × 2)
CertGetNameStringW (pCertContext, #CERT_NAME_SIMPLE_DISPLAY_TYPE, #CERT_NAME_ISSUER_FLAG, #NULL, 取指针_字节集型 (szName), dwData)
输出调试文本 (“颁发者: ”编码_Unicode到Ansi (szName))
dwData = CertGetNameStringW (pCertContext, #CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, #NULL, #NULL, 0)
szName = 取空白字节集 (dwData × 2)
CertGetNameStringW (pCertContext, #CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, #NULL, 取指针_字节集型 (szName), dwData)
输出调试文本 (“颁发给: ”编码_Unicode到Ansi (szName))
返回 ()
子程序名返回值类型公开备 注
GetTimeStampSignerInfo逻辑型 
参数名类 型参考可空数组备 注
pSignerInfo整数型
pCounterSignerInfo整数型
变量名类 型静态数组备 注
dwAttr整数型 
rgAttr整数型 
pszObjId整数型 
bRet逻辑型 
pbData整数型 
n整数型 
cbData整数型 
dwSize整数型 
rgValue整数型 
dwAttr = 指针_到整数 (pSignerInfo + 60)
计次循环首 (dwAttr, n)
rgAttr = 指针_到整数 (pSignerInfo + 64)
pszObjId = 指针_到整数 (rgAttr + (n - 1) × 12)
如果真 ( #szOID_RSA_counterSign指针到文本 (pszObjId))
rgValue = 指针_到整数 (rgAttr + (n - 1) × 12 + 8)
pbData = 指针_到整数 (rgValue + 4)
cbData = 取指针整数_ (rgAttr)
bRet = CryptDecodeObject (位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), #PKCS7_SIGNER_INFO, pbData, cbData, 0, #NULL, dwSize)
pCounterSignerInfo = LocalAlloc ( #LPTR, dwSize)
bRet = CryptDecodeObject (位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), #PKCS7_SIGNER_INFO, pbData, cbData, 0, pCounterSignerInfo, dwSize)
返回 ()

计次循环尾 ()
返回 ()
子程序名返回值类型公开备 注
GetDateOfTimeStamp逻辑型 
参数名类 型参考可空数组备 注
pSignerInfo整数型
st日期时间型
变量名类 型静态数组备 注
dwAttr整数型 
n整数型 
rgAttr整数型 
pszObjId整数型 
dwData整数型 
bRet逻辑型 
rgValue整数型 
pbData整数型 
cbData整数型 
ftFILETIME 
dwAttr = 指针_到整数 (pSignerInfo + 52)
计次循环首 (dwAttr, n)
rgAttr = 指针_到整数 (pSignerInfo + 56)
pszObjId = 指针_到整数 (rgAttr + (n - 1) × 12)
如果真 ( #szOID_RSA_signingTime指针到文本 (pszObjId))
dwData = 8  ' sizeof(FILETIME)
rgValue = 指针_到整数 (rgAttr + (n - 1) × 12 + 8)
pbData = 指针_到整数 (rgValue + 4)
cbData = 取指针整数_ (rgAttr)
bRet = CryptDecodeObject (位或 ( #X509_ASN_ENCODING, #PKCS_7_ASN_ENCODING ), 取指针_文本型 ( #szOID_RSA_signingTime ), pbData, cbData, 0, 取 数 据 _通用型 (ft), dwData)
st = FileTimeToVariantTime (ft)
返回 ()

计次循环尾 ()
返回 ()






前段时间写的!没记错的话有些地方可能有错,唉!不管了~
作者: 传奇    时间: 2021-5-10 16:39

作者: 周sir    时间: 2021-5-10 16:54
你该发发,要是看懂了,算我输
作者: zhouli5464    时间: 2021-5-10 17:42
似乎是首创哦, 之前需要用到的时候, 搜索没看到有
作者: 深圳梦    时间: 2021-5-10 18:24
感谢分享!!!
作者: Delude    时间: 2021-5-10 18:42
好东西
作者: wbphs    时间: 2021-5-10 19:07
感谢分享!谢谢
作者: 喵帕斯和艾希    时间: 2021-5-10 19:16

作者: 不苦小和尚    时间: 2021-5-10 21:16
看看不知道有啥用
作者: 先锋小七    时间: 2021-5-10 21:32
有的东西易语言翻译麻烦的很,倒不如C++现成的代码改成DLL调用,也是很舒服的。
作者: hongjian    时间: 2021-5-10 23:19
本帖最后由 hongjian 于 2021-5-10 23:39 编辑

读出来两个时间,第一个时间是错的,1899年,序列号那里有些问题,搞不出正确的。另外,如果可执行文件为压缩包格式时,签名时间读不出正确的,只能认出1899年12月30日(代表软件:https://download.novapdf.com/download/setup/novapdf.exe)
作者: 红色女孩    时间: 2021-5-11 02:37
要是看懂了,算我输
作者: 点点丶滴滴    时间: 2021-5-11 02:47
666666666666666
作者: 呵呵呵666    时间: 2021-5-11 10:40
hongjian 发表于 2021-5-10 23:19
读出来两个时间,第一个时间是错的,1899年,序列号那里有些问题,搞不出正确的。另外,如果可执行文件为压 ...

序列号那个我可以正常读取(是一个32位字符串),不过时间我那个也是不对
作者: hongjian    时间: 2021-5-11 12:53
呵呵呵666 发表于 2021-5-11 10:40
序列号那个我可以正常读取(是一个32位字符串),不过时间我那个也是不对 ...

序列号那里,原变量pszBuf提示错误,我就改成szBuf了,一直搞不明白那个地方,虽然这么改,但我知这么改走不通,并且那地方还报整数型错误
作者: 呵呵呵666    时间: 2021-5-11 14:23
hongjian 发表于 2021-5-11 12:53
序列号那里,原变量pszBuf提示错误,我就改成szBuf了,一直搞不明白那个地方,虽然这么改,但我知这么改 ...

其实就是把__get_byte 取出来的字节变成16进制然后累加可以直接用进制_十到十六代替
作者: 呵呵呵666    时间: 2021-5-11 14:25
hongjian 发表于 2021-5-11 12:53
序列号那里,原变量pszBuf提示错误,我就改成szBuf了,一直搞不明白那个地方,虽然这么改,但我知这么改 ...
  
计次循环首 (dwData, n)
tmp = 进制_十到十六 (__get_byte (指针_到整数 (pCertInfo + 8), dwData - n), )
如果真 (tmp = “”)
tmp = “00”
如果真 (取文本长度 (tmp) = 1)
tmp = “0” + tmp
szBuf = szBuf + 到小写 (tmp)
计次循环尾 ()


作者: 呵呵呵666    时间: 2021-5-11 14:32
hongjian 发表于 2021-5-11 12:53
序列号那里,原变量pszBuf提示错误,我就改成szBuf了,一直搞不明白那个地方,虽然这么改,但我知这么改 ...

时间应该是GetDateOfTimeStamp这个函数的问题
作者: hongjian    时间: 2021-5-11 14:33
呵呵呵666 发表于 2021-5-11 14:23
其实就是把__get_byte 取出来的字节变成16进制然后累加可以直接用进制_十到十六代替 ...

没搞出来,这个功能暂时用不到,要用的就是取签名时间,能有一个读出来就可以了,其它的,可以慢慢研究学习
作者: hongjian    时间: 2021-5-11 14:38
呵呵呵666 发表于 2021-5-11 14:25
[e=4].版本 2

.计次循环首 (dwData, n)

用你这个确实搞定了序列号了,谢谢。
* 序列号: 0a1f3a057a1dce4bf7d76d0c7adf837e
* 颁发者: DigiCert Assured ID Code Signing CA-1
* 颁发给: Beijing Qihu Technology Co., Ltd.
* 签名时间: 1899-12-30 00:00:00
* 序列号: 1121d699a764973ef1f8427ee919cc534114
* 颁发者: GlobalSign Timestamping CA - G2
* 颁发给: GlobalSign TSA for MS Authenticode - G2
* 签名时间: 2020-11-18 14:49:53
作者: 呵呵呵666    时间: 2021-5-11 14:45
hongjian 发表于 2021-5-11 14:38
用你这个确实搞定了序列号了,谢谢。
* 序列号: 0a1f3a057a1dce4bf7d76d0c7adf837e
* 颁发者: DigiCert A ...
好像日期字段为空时都是这个值,access也是
1899-12-30 00:00:00 这个时间貌似是空字段的意思
作者: hongjian    时间: 2021-5-11 14:50
呵呵呵666 发表于 2021-5-11 14:45
1899-12-30 00:00:00 这个时间貌似是空字段的意思

是的,调试那个地方,是空
作者: 呵呵呵666    时间: 2021-5-11 14:55
hongjian 发表于 2021-5-11 14:50
是的,调试那个地方,是空

我不经意间找到了这个代码的c++版本,我发现第一个证书根本没时间。。。
作者: 呵呵呵666    时间: 2021-5-11 14:57
hongjian 发表于 2021-5-11 14:50
是的,调试那个地方,是空

第一个主证书本来就没时间,第二个附属的证书才有
作者: 呵呵呵666    时间: 2021-5-11 14:59
https://blog.csdn.net/u014421422/article/details/43269551
作者: hongjian    时间: 2021-5-11 15:02
呵呵呵666 发表于 2021-5-11 14:59
https://blog.csdn.net/u014421422/article/details/43269551

可是明明有时间的,读不出来是什么原因,我前面的回复里有个文件的下载地址,明明上面有时间,但读不到,一个也读不到
作者: 呵呵呵666    时间: 2021-5-11 15:07
hongjian 发表于 2021-5-11 15:02
可是明明有时间的,读不出来是什么原因,我前面的回复里有个文件的下载地址,明明上面有时间,但读不到, ...

那个时间就是第二个证书的时间

作者: hongjian    时间: 2021-5-11 15:09
呵呵呵666 发表于 2021-5-11 15:07
那个时间就是第二个证书的时间

https://download.novapdf.com/download/setup/novapdf.exe  你在你那边测试下这个能不能读到时间
作者: 呵呵呵666    时间: 2021-5-11 15:11
hongjian 发表于 2021-5-11 15:09
https://download.novapdf.com/download/setup/novapdf.exe  你在你那边测试下这个能不能读到时间 ...

而且里面还有个没用的函数GetProgAndPublisherInfo
作者: 呵呵呵666    时间: 2021-5-11 15:18
hongjian 发表于 2021-5-11 15:09
https://download.novapdf.com/download/setup/novapdf.exe  你在你那边测试下这个能不能读到时间 ...

这个文件获取不了,好奇怪啊
作者: hongjian    时间: 2021-5-11 15:22
呵呵呵666 发表于 2021-5-11 15:18
这个文件获取不了,好奇怪啊

是的,我也是觉得很奇怪,同类的也一样获取不到,这只是一个例子,我本以为是压缩格式的事,但winrar的安装程序,又可以获取到,搞不懂。理论上,windows里,能读到,这些api就可以读到的
作者: 网络注册会员    时间: 2021-5-11 20:15
支持大神
作者: bill3k    时间: 2021-5-11 21:03
学习学习看看
作者: f100long    时间: 2021-5-11 22:26
努力学习天天向上
作者: sunsan    时间: 2021-5-12 08:45
这个可以哦
作者: 萧阳天    时间: 2021-5-12 09:09
写得不错,点赞
作者: callng    时间: 2021-5-12 10:21
大神就是大神,膜拜了
作者: emodiyu    时间: 2021-5-12 15:20
感谢分享,很给力!~
作者: 信易达    时间: 2021-5-12 16:15
前段时间写的!没记错的话有些地方可能有错,唉!不管了~
作者: 风中的玫瑰    时间: 2021-5-12 19:31
感谢分享
作者: tvvvhg    时间: 2021-5-12 22:38
感谢分享
作者: 土豆要不    时间: 2021-5-13 10:00
标题: ++
6666666666666666666
作者: 孤狼c    时间: 2021-5-13 10:26
感谢分享!
作者: yinghao2005    时间: 2021-5-13 11:35
好感谢分享..
作者: 网恋被骗几十万    时间: 2021-5-13 12:46
大神你好
作者: lm88818    时间: 2021-5-13 13:17
好感谢分享..
作者: 韦贝贝    时间: 2021-5-13 14:03
获得可执行文件中的数字签名的相关信息
作者: taizhong    时间: 2021-5-13 14:52
有些地方可能有错,唉
作者: 黄瓜000    时间: 2021-5-13 16:49
学习
作者: Hooksafe    时间: 2021-5-14 16:55
来看看                     
作者: yuxuanju    时间: 2021-5-14 17:25
太厉害了啊。
作者: 懒人定制软件    时间: 2021-5-15 01:01
抢个沙发,楼主来杯茶可好?
作者: 赤小瞳    时间: 2021-5-15 07:13
来看看  12
作者: 风云思星    时间: 2021-5-15 10:54
太给力啦~楼主V5!
作者: 上帝    时间: 2021-5-15 11:50
给力!~!~!~!~
作者: FUYUEPC    时间: 2021-5-15 12:47
感谢分享,很给力!
作者: Bszk    时间: 2021-5-15 19:57
瞧瞧,感谢分享
作者: 云南丿小海堂    时间: 2021-5-15 22:31
学习看看,谢谢老板的
作者: z博士    时间: 2021-5-16 00:13
感谢分享
作者: java22    时间: 2021-5-16 12:16
支持开源~!感谢分享
作者: Frieza    时间: 2021-5-16 15:51
谢谢分享
作者: 小柠檬1    时间: 2021-5-16 16:51
支持开源,感谢分享吖~~
作者: 草莓小熊    时间: 2021-5-16 20:29
        这么厉害!必须给个红包鼓励下~
作者: 恒云雨科技    时间: 2021-5-16 21:25

感谢分享,很给力!
作者: urenai    时间: 2021-5-16 23:31
获得可执行文件中的数字签名的相关信息
作者: heyuan1979    时间: 2021-5-17 11:12
这个不错,可以学习
作者: heyuan1979    时间: 2021-5-21 08:34
这个怎么用呀,晕
作者: foye123    时间: 2021-5-23 17:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 注册看看    时间: 2021-5-24 14:02
看看是什么。。。。
作者: Vanyogin    时间: 2021-5-26 16:02
看不懂,好像很厉害
作者: min722922    时间: 2021-5-29 12:20
        支持开源~!感谢分享
作者: 女娲    时间: 2021-5-31 21:59
有C++版的么?求分享
作者: delsu    时间: 2021-6-1 11:51
学习学习
作者: cy2018    时间: 2021-6-8 10:56
學習學習,謝謝分享
作者: 沈远    时间: 2021-6-9 16:14
支持开源~!感谢分享学习来了
作者: yuxuanju    时间: 2021-6-12 19:25
非常感谢。
作者: Jun.    时间: 2021-6-16 10:28
学习学习厉害了
作者: 匹诺曹君    时间: 2021-7-8 09:58
66666666666666666666666666666
作者: 蔡文松    时间: 2021-7-10 13:34
是md5吗。。
作者: 小书    时间: 2021-8-4 14:19
高难度哦。。
作者: shj0205    时间: 2021-8-4 14:25
感谢分享
作者: 土豆要不    时间: 2021-8-8 10:01
标题: ++
6666666666666666666
作者: dfdn    时间: 2021-8-15 07:49
感谢分享
作者: zzh233    时间: 2021-8-29 17:46
能搞出来给我的软件用吗 可以防止误杀
作者: daxiong8954    时间: 2021-8-30 15:36
感谢~这是个好的软件源代码~
作者: 2313291647    时间: 2021-9-16 22:29
666666666666666666666666666666
作者: 北岛zx    时间: 2021-10-9 18:13
感谢分享
作者: 北岛zx    时间: 2021-10-9 18:13
66666666666666666666666666666
作者: 北岛zx    时间: 2021-10-9 18:14
6666666666666666666666666666666666666666666666666
作者: 北岛zx    时间: 2021-11-29 19:39
666666666666666666666666666
作者: 北岛zx    时间: 2021-11-29 19:39
6666666666666666666666
作者: kaixian    时间: 2021-12-3 11:30
支持开源~!感谢分享
作者: vcyeus2016    时间: 2022-3-24 11:09
看不懂看不懂看不懂
作者: fjgh    时间: 2022-4-15 15:14

作者: 可罗米娜酱    时间: 2022-4-27 20:30
这是网上的吗
作者: 可罗米娜酱    时间: 2022-4-27 20:33
这个貌似用不了吧……
作者: 可罗米娜酱    时间: 2022-4-27 20:37
错误(10165): 所指定参数需要以"参考"方式传递,但是此处无法将所提供参数的地址传递过去.
佛了
作者: ghost12    时间: 2022-5-4 13:01
不明真相的吃瓜群众路过~\赶紧买个瓜围观
作者: 可罗米娜酱    时间: 2022-6-15 20:05
别点赞了,这个根本就用不了,函数调用都出问题了
作者: jysoft2022    时间: 2022-6-27 11:37
谢谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4