-
-
关于网文快捕4.0中的数字签名
-
发表于:
2004-5-23 16:10
2012
-
网文快捕4.0刚出来,看了一下,注册算法似乎没怎么变,还是明码。不过在注册码后附加了数字签名。
注册码大概格式
454C4942442D30303734312D32303330362D46534657542D584B594F55002222222233333333
即注册码ELIBD-00741-20306-FSFWT-XKYKD的ASCII码后补00,其后为数字签名
先调用Microsoft CryptoAPI来通过数字签名来验证注册码合法性
签名类型为PROV_RSA_FULL
Hash类型为CALG_MD5
文件中保存的pub key长为84字节
.text:0049F623 push ecx ; sDescription
.text:0049F624 mov eax, [ebp+hPubKey]
.text:0049F627 push eax ; hPubKey
.text:0049F628 mov edx, [ebp+dwSigLen]
.text:0049F62B push edx ; dwSigLen
.text:0049F62C mov eax, [ebp+pbSignature]
.text:0049F62F push eax ; pbSignature
.text:0049F630 mov edx, [ebp+hHash]
.text:0049F633 push edx ; hHash
.text:0049F634 call CryptVerifySignatureA
没接触过数字签名,问一下若没有private key,是否有办法伪造一个数字签名出来?否则就无法做注册机,只能爆破。
这个软件爆破起来有些麻烦,验证注册码的地方太多,验证注册码函数
__fastcall WaDownloadImageFile(System::AnsiString)
返回值一般=0未注册,=1已注册
不能直接修改数字签名验证返回值,因为 程序给注册码头加了两个字符类似'0\r' 或 '\r\d',导致验证结果不同。
数字签名验证前先将头尾ASCII小于20h的字符去除,中就去掉后再进行数字签名验证,
这前面加的字符不同,就导致验证结果不同,例如
加'\r\d'时,数字签名验证返回就时正确的
但若附加符'0\r'时就不同了,必然数字签名要出错,而你若将其修改为验证正确反而不对了。基本只能每一个验证之处都得看看
加上dll里面验证有几十次,太麻烦了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!