能力值:
( LV7,RANK:100 )
|
-
-
2 楼
简单的标注一下常用的API
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
0x02 初见——服务端的主要加密算法 CRC32 主要用于通信协议中的校验,和函数签名的校验 SHA1 仅用于getRandomkey,其余没有调用 SHA256 用于签名校验,配合ECDSA AES 用于数据包的加解密,以及license文件的加解密 ECDSA secp224r1{ p = 0xffffffffffffffffffffffffffffffff000000000000000000000001 a = 0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe b = 0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4 n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D Gx = 0xB70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21 Gy = 0xBD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34 } ECDSA 是研究的重点,涉及License文件的验证
最后于 2023-1-3 14:02
被ericyudatou编辑
,原因:
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
0x03 CodeMeter所特有的ECDSA 吐槽一下,FindCrypt貌似不支持ECDSA算法。
其中我们主要关注checkECDSASignature ECDSAEncrypt ECDSASign这几个函数,因为ECDSA算法的原理及其实现论坛上一抓一大把,我这里只说说这些函数在CodeMeter中的用处以及定位方法 checkECDSASignature BOOL __cdecl checkECDSASignature(
char *ecdsa,
unsigned __int8 *pubKey,
unsigned __int8 *pbSignature,
unsigned __int8 *mabDigest)
{
BOOL result; // eax
void *curve_n; // [esp+10h] [ebp-A8h] BYREF
void *curve_G_y; // [esp+14h] [ebp-A4h] BYREF
void *curve_G_x; // [esp+18h] [ebp-A0h] BYREF
__int128 pSignature_2[2]; // [esp+1Ch] [ebp-9Ch] BYREF
char a2[16]; // [esp+3Ch] [ebp-7Ch] BYREF
__int128 v10; // [esp+4Ch] [ebp-6Ch]
int pSignature_1[7]; // [esp+5Ch] [ebp-5Ch] BYREF
int pubkey[4]; // [esp+78h] [ebp-40h] BYREF
__int128 v13; // [esp+88h] [ebp-30h]
char plaintext[4]; // [esp+98h] [ebp-20h] BYREF
result = sub_B1C960(ecdsa, (int)pubKey, 32);
if ( result )
{
bignum_copy((int)pSignature_1, pbSignature, 0x1Cu);
bignum_copy((int)pSignature_2, pbSignature + 32, 0x1Cu);
bignum_copy((int)plaintext, mabDigest, 0x1Cu);
get_ecdsa_curve(&curve_n, &curve_G_x, &curve_G_y);
result = bignum_compare_int((int)pSignature_1, (int)curve_n, 7);
if ( !result )
{
result = bignum_compare_int((int)pSignature_1, 0, 7);
if ( result != 3 )
{
result = bignum_compare_int((int)pSignature_2, (int)curve_n, 7);
if ( !result )
{
result = bignum_compare_int((int)pSignature_2, 0, 7);
if ( result != 3 )
{
sub_B1FBE0(pSignature_2, (int)a2, curve_n, 7);
sub_B1FE90((int)plaintext, (int)a2, curve_n, 7);
sub_B1FE90((int)a2, (int)pSignature_1, curve_n, 7);
bignum_copy((int)pubkey, pubKey, 0x1Cu);
bignum_copy((int)pSignature_2, pubKey + 32, 0x1Cu);
result = init_ecdsa_curve_G(ecdsa, a2, 7, pubkey, pSignature_2);
if ( result )
{
*(_OWORD *)a2 = *(_OWORD *)ecdsa;
v10 = *((_OWORD *)ecdsa + 1);
pSignature_2[0] = *((_OWORD *)ecdsa + 2);
pSignature_2[1] = *((_OWORD *)ecdsa + 3);
*(_OWORD *)pubkey = *((_OWORD *)ecdsa + 4);
v13 = *((_OWORD *)ecdsa + 5);
result = init_ecdsa_curve_G(ecdsa, plaintext, 7, curve_G_x, curve_G_y);
if ( result )
{
result = sub_B1BC30(ecdsa, a2, (int)pSignature_2, (int)pubkey);
if ( result )
{
result = bignum_compare_int((int)(ecdsa + 64), 0, 7);
if ( result != 3 )
{
init_ecdsa_curve_p(ecdsa);
result = bignum_compare_int((int)ecdsa, (int)pSignature_1, 7);
if ( result == 3 )
return 1;
}
}
}
}
}
}
}
}
}
return 0;
} 用处: client CmValiateSignature验证签名 server License授权校验 Licensor Public Key检查 etc 破解方法: 函数尾xor eax,eax改成mov al,1 就能爆掉证书检查 定位方法: 搜索字符串 “Licensor Public Key Signature is invalid.”,串参找引用,只有一个函数 这个便是checkECDSASignature
(未完待续)
最后于 2023-1-3 16:50
被ericyudatou编辑
,原因:
|
能力值:
( LV1,RANK:0 )
|
-
-
5 楼
license使用时间过期的能爆破么
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
感谢大佬的分享!文章还更新吗?
|
能力值:
( LV7,RANK:100 )
|
-
-
7 楼
whshizy
感谢大佬的分享!文章还更新吗?
更,看着答辩一样的代码快吐了,缓两天
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
大佬什么时候研究一下SafeNet Sentinel LDK的证书授权
|
能力值:
( LV1,RANK:0 )
|
-
-
9 楼
ericyudatou
0x03 CodeMeter所特有的ECDSA吐槽一下,FindCrypt貌似不支持ECDSA算法。其中我们主要关注checkECDSASignature ECDSAEncrypt& ...
最新版本7.5和7.3差异挺大,Licensor Public Key Signature is invalid. 字符串都找不到
|
能力值:
( LV7,RANK:100 )
|
-
-
10 楼
lxr677
最新版本7.5和7.3差异挺大,Licensor Public Key Signature is invalid. 字符串都找不到
可以试试搜截图里头的常数
|
能力值:
( LV1,RANK:0 )
|
-
-
11 楼
ericyudatou
可以试试搜截图里头的常数
最新版本那些常数都已经搜不到了,我看变动还挺大的,以前能找到的导入license的那些读取系统变量的也都找不到了,大概率重写了
|
能力值:
( LV7,RANK:100 )
|
-
-
12 楼
lxr677
license使用时间过期的能爆破么
有license就能做出永久的假服务器
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
狗内的授权可以提取?然后脱狗运行吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
楼主太厉害了,膜拜
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
楼主太厉害了,膜拜
|
能力值:
( LV1,RANK:0 )
|
-
-
16 楼
加个qq2528658984 我这个有几个wibu 激活文件
最后于 2023-4-28 18:02
被机械战甲编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
ericyudatou
0x03 CodeMeter所特有的ECDSA吐槽一下,FindCrypt貌似不支持ECDSA算法。其中我们主要关注checkECDSASignature ECDSAEncrypt& ...
楼主,请教下,0x03 CodeMeter所特有的ECDSA 吐槽一下,FindCrypt貌似不支持ECDSA算法。这些算法是如何定位 的,用什么工具可以找到这些算法,谢谢。
|