能力值:
( LV2,RANK:10 )
|
-
-
2 楼
crc效验看看
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
建议楼主搜索一下,以前讨论关于过爆破是不是万能的这个话题。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
让注册码与软件的关键部分 变量 函数发生关系就行了
没有正确的注册码得到的根本不是可以用的程序
就象winrar的密码那样
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
注册码与软件功能本来是没关系的,这样把它们强拉上的关系可靠吗?或者说发生怎样的关系才会可靠不被破解者识破?RAR的密码是加密解密用的“种子”,它的密码本来就与软件功能有关。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
发生关系之后在没有得到一个正确的注册码的情况下时根本无法破解
RAR密码只有一个 所以他是不可破的
|
能力值:
( LV12,RANK:210 )
|
-
-
7 楼
简单的来说,在关键代码做效验. 一个简单的例子
int addr[4];
unsigned char important[100] = "........";
bool valid_key( char * key)
{
bool ret == strcmp(key, "abcdefg");
__asm
{
call dummy
dummy:
pop ecx
mov dword ptr[addr], ecx
}
return ret;
}
bool runner()
{
char key[255];
gets(key);
if (!valid_key(key)) exit(1);
decode(important_data, key);
printf("valid key\n");
__asm
{
call dummy
dummy:
pop ecx
mov dword ptr[addr+4], ecx
}
//在别的地方执行这个. 可以放远点
bool crcok = crc(valid_key, addr, "xxxx") &&
crc(runner, addr+1, "yyyy")
if (bool)
{
__asm push eax
}
}
利用key做变换代码并不安全. 因为你最终user_name, machine_code, sn 等都要变算出一个固定值. 其实也是可以暴
破解(前提是只要知道一个有效的序列号, 就好比你知道了rar的
密码一样)
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
嵌入虚拟机执行伪代码最安全.
如果实在不行, 可以考虑做两个功能函数, 一个是试用函数, 一个是正式函数, 未注册调用的是试用函数, 注册的通过key计算出正式函数的地址即可.
这样做的难处在于你必须设计出一个key函数, 不正确的返回0, 正确的返回正式函数的地址和试用函数地址的差值.
|
|
|