Feat: anti-cracking hardening - version binding and updated libs

This commit is contained in:
yuanyuanxiang
2026-06-19 12:42:53 +02:00
parent 66c950cecb
commit 103123f533
14 changed files with 38 additions and 2 deletions

View File

@@ -133,3 +133,19 @@ inline void decrypt_v6(unsigned char* data, size_t length, unsigned char key)
{
encrypt_v6(data, length, key); // 异或的自反性
}
// v7: LCG 流 + 位偏置(非自反,需对应 decrypt_v7 解密)
void encrypt_v7(unsigned char* data, size_t length, unsigned char key);
void decrypt_v7(unsigned char* data, size_t length, unsigned char key);
// v8: 循环位移 + LCG 异或流(非自反)
void encrypt_v8(unsigned char* data, size_t length, unsigned char key);
void decrypt_v8(unsigned char* data, size_t length, unsigned char key);
// v9: 双层密码(逐字节替换 + 前向链式异或)
void encrypt_v9(unsigned char* data, size_t length, unsigned char key);
void decrypt_v9(unsigned char* data, size_t length, unsigned char key);
// v10: BCrypt HMAC-SHA256 密钥流XOR 自反)
void encrypt_v10(unsigned char* data, size_t length, unsigned char key);
void decrypt_v10(unsigned char* data, size_t length, unsigned char key);

View File

@@ -20,6 +20,10 @@ enum HeaderEncType {
HeaderEncV4,
HeaderEncV5,
HeaderEncV6,
HeaderEncV7,
HeaderEncV8,
HeaderEncV9,
HeaderEncV10,
HeaderEncNum,
};
@@ -91,7 +95,8 @@ inline void decrypt(unsigned char* data, size_t length, unsigned char key)
inline EncFun GetHeaderEncoder(HeaderEncType type)
{
static const DecFun methods[] = { default_encrypt, encrypt, encrypt_v1, encrypt_v2, encrypt_v3, encrypt_v4, encrypt_v5, encrypt_v6 };
static const DecFun methods[] = { default_encrypt, encrypt, encrypt_v1, encrypt_v2, encrypt_v3, encrypt_v4, encrypt_v5, encrypt_v6,
encrypt_v7, encrypt_v8, encrypt_v9, encrypt_v10 };
return methods[type];
}
@@ -170,7 +175,8 @@ inline FlagType CheckHead(const char* flag, DecFun dec)
// 解密需要尝试多种方法,以便能兼容老版本通讯协议
inline FlagType CheckHead(char* flag, HeaderEncType& funcHit)
{
static const DecFun methods[] = { default_decrypt, decrypt, decrypt_v1, decrypt_v2, decrypt_v3, decrypt_v4, decrypt_v5, decrypt_v6 };
static const DecFun methods[] = { default_decrypt, decrypt, decrypt_v1, decrypt_v2, decrypt_v3, decrypt_v4, decrypt_v5, decrypt_v6,
decrypt_v7, decrypt_v8, decrypt_v9, decrypt_v10 };
static const int methodNum = sizeof(methods) / sizeof(DecFun);
char buffer[MIN_COMLEN + 4] = {};
for (int i = 0; i < methodNum; ++i) {