首页
社区
课程
招聘
[转帖]关于Flexlm ECC pubkey 替换几个常见问题的说明
发表于: 2013-11-16 04:45 10534

[转帖]关于Flexlm ECC pubkey 替换几个常见问题的说明

2013-11-16 04:45
10534
关于 Flexlm ECC的通用修正方法主要包括: 1.打补丁强制返回正确校验 2.修改1-2处flag位使用12位sign进行校验 3.pubkey 替换。最后一种方法仅改变程序原始数据,而不改变代码,具有通用性。论坛关于pubkey替换的相关讨论相对较少。

关于pubkey几个常见问题的说明

1、可以PJ xxx, yyy软件么?
A:只要是相同编译器(linux下一般都是gcc吧?)编译出来的Flexln的代码,都有相同的代码特征,可以查到pubkey的位置,获取pubkey并进行替换。Win32下编译器可能有所不同,正在弄。一句话,理论上都可以替换掉pubkey。

2、详细步骤如何?
给一般玩家:
1、在linux下运行"pubkey -d cdslmd -y",WINDOWS下是"pubkey.exe -d cdslmd -y"(需要进命令控制台,就是DOS窗口)。
2、在windows下运行"lmcrypt_kkk -i xxx.dat -o yyy.dat",xxx.dat是原来的license文件,包括需要的feature在里面,yyy.dat是重新生成的license文件
3、复制yyy.dat到linux下,作为license使用。
给喜欢自己动手的人:
可以自己制作lmcrypt,需要SEED1、SEED2和私钥,SEED1、SEED2自己找,做的时候,用Flexlm sdk,我用的是11.4版本。私钥存放在lmprikey.h文件中,最后一个私钥就是(239位那个)。值得注意的是,并不是所有软件都只是ECC保护的,有的软件还有VENDOR_STRING保护,这个还需要额外研究,或使用别的PJ来辅助完成。

3、报告Warning: diff pubkey.....
A:如果是运行pubkey -d xxx之后出现的,意味着该目录下有的软件使用了不同的pubkey(对同一软件而言基本不可能,除非使用不同的vendor daemon),或者pubkey这个软件无法侦测到该文件的正确的pubkey,需要单独处理(自己破解,例如pubkey_verify破解等)。
如果pubkey -d xxx没问题,而pubkey -d xxx -y出现warning,则可以直接忽视。这个主要是在linux下,有符号链接这个玩意,一个文件有多个文件名,所以patch完一次还可能patch第二次。我的工具会在出现Warning的时候跳过去,不再替换,所以应该没问题的。

4、是否需要重新安装软件?
A:强烈建议重新安装。因为你以前可能用了别的破解,这些破解有可能修改了程序代码,导致我的pubkey替换被屏蔽掉(没作用)或者异常。

5、是否可以恢复(uninstall patch)?
A:目前没做这个功能。估计没必要,反正你也不知道正确的公私钥对,修不修改没意义,暴力破解照样通行,哈哈

6、我没有原始输入用的license?
A:自己写一个,我的软件包里面有例子,自己修改修改。把需要的Feature自己加上去,注意SIGN或者SIGN2要写120字符长的那种,不能写12字符长的SIGN。

7、自己想搞lmcrypt的如何做?
1、修改lm_code.h,我的lm_code.h内容如下:
#define LM_SEED1 0x11111111
#define LM_SEED2 0x22222222
#define LM_SEED3 0x33333333
#define LM_STRENGTH LM_STRENGTH_239BIT
#define ENCRYPTION_SEED1 0x90A843B1 
#define ENCRYPTION_SEED2 0x00000000 
#define VENDOR_KEY1 0xc5c185ad 
#define VENDOR_KEY2 0x441a00c2
#define VENDOR_KEY3 0xe52222bf
#define VENDOR_KEY4 0xa28926c3
#define VENDOR_KEY5 0x617343c9
#define TRL_KEY1 0x8e11a8a9
#define TRL_KEY2 0xf9176408
#define VENDOR_NAME "xxxx"
//#define LM_SIGN_LEVEL LM_SIGN2  //有些软件需要SIGN2,有些不需要。
2、修改makefile,把VENDORNAME修改为自己需要的xxx
3、build(你先要安装VC)
4、看看lmprikey.h,是否是下列内容?
static unsigned char lm_prikey[1][3][40] = {{{0x0, 0xb2, 0x45, 0x2c, 0xbc, 0x7e, 0x72, 0xc1, 0x3a, 0x39, 0x5e, 0x67, 0x25, 0xce, 0xd9},
    {0x2, 0x1c, 0x8f, 0xa2, 0xe4, 0xb6, 0x4f, 0x7a, 0x2c, 0xd2, 0x6, 0x81, 0xb5, 0xd8, 0xf9, 0xf1, 0x81, 0x6, 0x4a, 0x8e, 0x17},
    {0x3, 0xa0, 0x58, 0x89, 0xd2, 0x30, 0x22, 0xd8, 0xca, 0x5e, 0xac, 0x59, 0x33, 0xb3, 0x69, 0xdc, 0x30, 0x9b, 0xb6, 0x8d, 0x24, 0x56, 0x60, 0x23, 0xf0, 0x8c, 0x11, 0xb8, 0xc2, 0xba}}};
        
static unsigned int lm_prisize[4][3] = {{0xf, 0x15, 0x1e}
特别是最长最后那个key,一定要是上面那个值
5、用生成的lmcrypt测试一下license,看看对不对?不对的最大可能就是#define LM_SIGN_LEVEL LM_SIGN2,注释掉试试,重新生成lmcrypt试试看。
6、如果有VENDOR_STRING保护,需要自己破解或者借助别人的PJ,一般VENDOR_STRING保护除了SIGN字段外的其他字段,所以可以先用别人的PJ生成正确的VENDOR_STRING,再用自己的lmcrypt对同一个文件生成正确的SIGN。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 41
活跃值: (96)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
替换公匙的方法还请各位指点,以下是总结得到的信息:
手动替换很麻烦,需要看verdorcode结构,10,16,1f,第一块40字节大小的pubkey,第二块40字节大小的pubkey,第三块40字节大小的pubkey;
10,表示第一块的pubkey是16字节大小
16,表示pubkey的字节大小是22
1f,表示pubkey的字节大小是31
具体数数正版许可里的sign的位数,来决定需要替换哪些pubkey,pubkey在磁盘上没有连续存放,但是在一个函数里的偏移位置是连续的,可以定位。
2013-11-23 14:49
0
雪    币: 135
活跃值: (191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
分析分析Common Daemon Vendor类型的Flexlm更有意义。
一个主DAEMON管理多个子软件。
2013-11-26 07:20
0
雪    币: 198
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢大侠,有没有实际例子,给小弟学学。
2013-12-6 08:33
0
雪    币: 321
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
在那个函数里引用,怎么确认pubkey在磁盘存放的位置,另外pubkey1.7 无法替换 linux so文件格式,要替换linux so文件格式应该怎么办
2014-5-10 23:38
0
雪    币: 192
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
#define LM_SEED1 0x11111111
#define LM_SEED2 0x22222222
#define LM_SEED3 0x33333333
#define LM_STRENGTH LM_STRENGTH_239BIT
#define ENCRYPTION_SEED1 0x90A843B1 
#define ENCRYPTION_SEED2 0x00000000 

不需要写encryption_seed1和2,lm_seed就足够了,如果encryption_seed1和2写错了,反而会有问题。
2014-8-14 20:52
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主和大家的回复都很精辟啊,学习了,有空试一下
2015-4-23 14:26
0
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你这个 lmcrypt_kkk 在哪里啊
2015-5-7 17:10
0
雪    币: 17
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这么详细,要顶才行。
2015-9-17 14:23
0
雪    币: 98
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请问pubkey1.7可以替换win64位的吗?谢谢
2015-10-29 10:03
0
雪    币: 57
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请问pubkey1.7可以替换win64位的吗?谢谢

YES, tested with a target v11.9.1 and v11.10.1 x64 and some 11.11. Otherwise you need to inject manually your pubkey
2015-11-3 03:38
0
雪    币: 98
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
thank you very much
2015-11-3 09:04
0
雪    币: 334
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
mark
2017-7-25 10:11
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
markkwh
2018-1-13 13:29
0
雪    币: 101
活跃值: (743)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
很强大,使用方法感觉跟tanker的软件很像。
2020-7-7 21:21
0
游客
登录 | 注册 方可回帖
返回
//