首页
社区
课程
招聘
[原创]flexlm程序替换pubkey制作license的血泪史
发表于: 2015-8-29 17:56 21086

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

2015-8-29 17:56
21086

多年前这个软件都是直接爆破的,程序在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]


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (20)
雪    币: 10672
活跃值: (3579)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
这是一份很好的总结,基本就这样,谢谢楼主分享。
2015-8-29 18:31
0
雪    币: 1436
活跃值: (3906)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
排一下版
2015-8-29 21:10
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个编译和替换会点,能否把你爆破的程序贴上来看看哇
2015-8-29 22:01
0
雪    币: 12352
活跃值: (5118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
来学习了哟,多谢
2015-8-29 23:20
0
雪    币: 1436
活跃值: (3906)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
排一下版
2015-8-30 00:52
0
雪    币: 10672
活跃值: (3579)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
楼主能否写一个手动替换pubkey的实例?
2015-8-30 08:13
0
雪    币: 1436
活跃值: (3906)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
排一下版
2015-8-30 11:59
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
一直关注pubkey替换,但是没有全程成功过,看了楼主的经历,有空一定要再试试
2015-8-30 22:24
0
雪    币: 1
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主,11.9的没有源码啊,请问你是通过什么方法找到pubkey的所在位置啊。。。。。。
2015-8-30 23:44
0
雪    币: 1
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
像11.6版有sig文件,直接搜索名字就可以了,但是11.9的名称混效果,根本找不到关键函数啊。
2015-8-30 23:45
0
雪    币: 98
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主辛苦  努力学习中   希望楼主继续不断更新  谢谢
2015-8-31 10:37
0
雪    币: 98
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
请教楼主一下 这个方法针对32和64位的是一样的吗?
2015-8-31 13:48
0
雪    币: 1436
活跃值: (3906)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
一样,普通的破解应该是先破解x86的,对照关键位置很容易破解x64的阿
2015-8-31 23:18
0
雪    币: 41
活跃值: (96)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
 1.如果是采用pubkey 1.70替换,可以将pubkey 1.70内置的PubKey换成自己的(需要计算一下
请教楼主怎样计算出来自己的pubkey,还请介绍一下,谢谢
2015-9-2 12:28
0
雪    币: 98
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
请教一下楼主   用pubkey1.7可以替换64位的.exe吗?
2015-10-28 15:21
0
雪    币: 189
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
帖子咋没了啊
2017-4-15 16:14
0
雪    币: 240
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
楼主,有事需要请教你下,可以付费请教,QQ 459604470 谢谢
2019-10-11 13:00
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
19
mark
2019-10-12 15:58
0
雪    币: 101
活跃值: (743)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
mark,没看懂,后面来补课。
2020-6-8 22:18
0
雪    币: 101
活跃值: (743)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
方向感 一样,普通的破解应该是先破解x86的,对照关键位置很容易破解x64的阿
楼主,我正在研究的flexnet v11.x,license中sign是60位的,请问替换pubkey成功后,自制的新license加载不成功,license格式确认正确,是否还需要做其他的步骤?
2020-7-23 10:28
0
游客
登录 | 注册 方可回帖
返回
//