欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]flexlm程序替换pubkey制作license的血泪史

[原创]flexlm程序替换pubkey制作license的血泪史

多年前这个软件都是直接爆破的,程序在lc_checkout的时候会调用setjmp,直接修改这里跳转,让他返回0,实现了不要lic也可以直接运行程序。

if (setjmp(job->jobcatch))
return 0;

补丁的程序太多,setjmp在msvcrxx.dll中,直接修改msvcrxx.dll的setjmp3,在里面判断调用进程是不是需要补丁的程序,是就直接返回0,否还是继续执行setjmp3.用这个方法实现了不修改程序就破解了。


多年后的今天,翻看论坛前辈留下的宝贵资料,结合sdk源码,奋斗了多少个日日夜夜,终于重新对这个软件打了补丁,作出了注册机。

大概方法就是手动或用程序替换程序的pubkey,(当然你也可以直接修改l_pubkey_verify,直接返回0,只要lic格式跟原版一致,例如将一个试用lic的试用时间往后修改一下,程序就能运行。)找到ENCRYPTION_SEED1/2,修改sdk代码,生成lmcrypt就行了。

pubkey的手动替换,请仔细阅读[URL="http://bbs.pediy.com/showthread.php?t=192180"]ECC替换公钥实践[/URL],这个方法适用于任何版本,pubkey分布在lm_new.c中,里面夹杂了大量的垃圾代码,通过asm搜索,再F5,很容易找到这些pubkey,替换成你自己生成的pubkey,然后制作一个dif文件,自动替换,如:

This difference file has been created by IDA Pro
0039F0F8: 76 76
0039F6F4: 13 cf
0039F294: 42 27
0039F068: 26 bc
0039F630: 4D 05
0039F3F4: 99 3c
0039F518: 88 bb

pubkey的自动替换,可以使用[URL="http://bbs.pediy.com/showthread.php?t=199996"]关于Generic ECC pubkey replacer by tanker, v1.70[/URL],但是他不支持11.9.1,用这个工具只能将pubkey替换成特定的pubkey,当然可以替换这个工具中内置的pubkey成你自己的。如果用网上流传的命令行pubkey -d xxx -y xxxx.exe,制作的lic程序不认,他替换的内容太多了,我只替换Group0 PubKey239,采用命令行pubkey -s 2 -d xxx -y xxxx.exe即可。采用这个工具自带的pubkey,记得将他对应的PriKey239贴到sdk的lmprikey.h中。

pubkey的定位和查看:版本低的可以用[URL="http://bbs.pediy.com/showthread.php?p=1324685"]flexlm ECC pubkey 自动搜索工具 [/URL],太高的估计只能自己找了。如何定位可以参照[URL="http://bbs.pediy.com/showthread.php?t=192180"]ECC替换公钥实践[/URL]

很多帖子说查找LM_SEED1/2/3,有看到说LM_SEED-》ENCRYPTION_SEED是不可逆的,一般找到的都是ENCRYPTION_SEED1、2,所以找到的都是ENCRYPTION_SEED1/2,不要当成LM_SEED1、2贴到lm_code.h中,且这个ENCRYPTION_SEED1/2贴到lm_code.h作出的lic也不能用,必须贴到lmseeds.h中,网上很多说贴到lm_code.h,我是没成功过。ENCRYPTION_SEED3、4无关紧要,不用修改。

根据以上方法制作的lic,程序替换过pubkey后,正常运行,但是vendor.exe却运行不了,弹窗提示can't initialize错误,dos窗口提示
D:\>xxx 1 2 3
17:42:31 (xxx) FLEXnet Licensing version v11.6.0.0 build 60117 i86_n3
17:42:33 (xxx) EXITING DUE TO SIGNAL 43 Exit reason 20

(vendor.exe需要传入3个参数才能运行,且lic他从C:\flexlm\license.dat读取,所以先将lic复制成C:\flexlm\license.dat)
最后发现许可有问题,原来是
FEATURE V1 xxx 5.1 1-oct-2017 uncounted HOSTID=ANY \
SIGN="065C C004 8667
需要改成
SERVER My_PC 1010b1915316
VENDOR xxx
USE_SERVER
INCREMENT V1 xxx 5.1 1-oct-2017 uncounted HOSTID=ANY \
SIGN="065C C004 8667

再次运行xxx.exe,终于成功了。




可以参见以下几个文章:
[URL="http://bbs.pediy.com/showthread.php?t=181454"]关于Flexlm ECC pubkey 替换几个常见问题的说明 [/URL]
[URL="http://bbs.pediy.com/showthread.php?t=199996"]关于Generic ECC pubkey replacer by tanker, v1.70[/URL]
[URL="http://bbs.pediy.com/showthread.php?t=81843"]手工快速识别+破解 FLEXLM_ECC关键函数[/URL]
[URL="http://bbs.pediy.com/showthread.php?t=61770"]编译Flexlm 11.4 SDK的步骤 [/URL]

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功