-
-
[旧帖]
[讨论]关于Flexlm user_crypt_filter和SIGN
0.00雪花
-
发表于:
2008-11-29 17:40
11149
-
[旧帖] [讨论]关于Flexlm user_crypt_filter和SIGN
0.00雪花
我最近在研究一个用Flexlm 8.1a保护的程序,似乎这个程序采用了uses user_crypt_filter保护,原因可以看下面的代码。
.text:0046ADD1 mov edx, off_493064
.text:0046ADD7 push edx
.text:0046ADD8 push 4Ah
.text:0046ADDA mov eax, dword_4AC488
.text:0046ADDF push eax
.text:0046ADE0 call _lc_set_attr
在仔细研究了CrackZ的相关文章后,我终于从N长的代码段中成功恢复了permute table和xorvals。当然,两个加密的seeds还是很容易用老方法在l_sg内得到。然后在Flexlm SDK 8.1a中更新对应的文件,编译、执行后得到想要的lmcrypt程序,一切似乎很顺利。用lmcrypt产生的如下license也能成功被daemon接受。
INCREMENT [I]feature1 daemon[/I] 2008.0 01-jan-00 uncounted 0F33363EB470 HOSTID=INTERNET=*.*.*.*
似乎万事大吉了,可我突发奇想试了一下带SIGN格式的license,接下来的事情就把我彻底弄晕了。这个license根本无法正确被daemon识别。
INCREMENT [I]feature1 daemon[/I] 2008.0 01-jan-00 uncounted HOSTID=INTERNET=*.*.*.* SIGN=3EC17038B252
经过耐心乏味的代码跟踪,我发现user_crypt_filter部分正确的expected character应该是我用lmcrypt算出的3EC17038B252,而尝试用这个代码反推出的SIGN值为2DBD6848A2E4,把这个值带入license中真的可以成功被check out出。
INCREMENT [I]feature1 daemon[/I] 2008.0 01-jan-00 uncounted HOSTID=INTERNET=*.*.*.* SIGN=2DBD6848A2E4
可问题来了,为什么我用lmcrypt无法产生正确的SIGN值,而却可以产生正确的LK值呢?
接着,我试着修改permute table中的值,甚至干脆不用user_crypt_filter,结果我都得到了相同“错误”的SIGN值,而得到的LK值却会随我输入的permute table而变化。
无user_crypt_filter时的License Key.
INCREMENT feature1 daemon 2008.0 01-jan-00 uncounted BA674BA6A11B HOSTID=INTERNET=*.*.*.*
请问是否有同行曾经研究过user_crypt_filter,可有尝试用它去产生SIGN格式的license?产生的license和根本不用user_crypt_filter时可否相同?如果是相同的,那是否意味着user_crypt_filter只对LK起作用,而不会改变license中的SIGN值呢?如果是这样,那岂不意味着带SIGN格式的license无法使用user_crypt_filter,真的是这样的吗?那我的vendor daemon又是用什么方法来处理的呢?
希望有高手出来解释一下!
对user_crypt_filter有兴趣的朋友可以研究一下。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)