首页
社区
课程
招聘
[求助]关于FLEXLM v11.14 找 ENCRYPTION_SEED1/2的问题
发表于: 2020-11-14 16:21 7072

[求助]关于FLEXLM v11.14 找 ENCRYPTION_SEED1/2的问题

2020-11-14 16:21
7072

不知道大家是否发现,新的SDK 11.14和v9.2已经不同了,关键的 job 的结构体, typedef struct lm_handle{ ..} 已经有所改变, 在V11.14中,第8byte开始已经不是mem_ptr2_bytes[12]了。请问这种情况下怎么找 seed?

以下是 v11.14的结构体

typedef struct lm_handle {
int type; /
Type of struct */

 

#ifdef LM_INTERNAL
FLEX_VERSION version; / the flexlm version from the vendor code /
struct lm_handle FAR first_job; / First job in list /
struct lm_handle FAR
next;/ Next job in list /
LM_ERR_INFO err_info;
LM_DAEMON_INFO_PTR daemon; / Daemon data /
LM_OPTIONS_PTR options; / Options for this job /
LM_HOSTID_REDIRECT_PTR redirect; / Hostid redirection /
CONFIG_PTR line; / Pointer to list of license file lines & components/
CONFIG_PTR packages; / list of packages /
LM_CHAR_PTR_PTR lic_files; / Array of license file names/
int lfptr; / Current license file ptr /
。。。
}*


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

最后于 2020-11-15 11:56 被ghostiger编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
方法一样,仅v11.16去了标志3D4DA1D6
2020-11-14 21:03
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
@yangmyron, 谢谢你的回复。 不一样,以前是靠那job 偏移后的12个字节挑出来,填入用calseed计算,或者直接置0可以得到,现在找不到job 后面那个数据结构了。
另外,我在3D4DA1D6处设置断点,居然都不命中,好奇怪,不知道怎么回事。
2020-11-14 21:38
0
雪    币: 12332
活跃值: (5103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

楼主收弟子不,想跟你入个门,也想玩玩FL
2020-11-15 09:54
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
yangmyron 方法一样,仅v11.16去了标志3D4DA1D6
大神能不能指点一二呀。谢谢
2020-11-15 11:56
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
xie风腾 [em_4] 楼主收弟子不,想跟你入个门,也想玩玩FL
我也是新手
2020-11-15 11:58
0
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
ghostiger @yangmyron, 谢谢你的回复。 不一样,以前是靠那job 偏移后的12个字节挑出来,填入用calseed计算,或者直接置0可以得到,现在找不到job 后面那个数据结构了。 另外,我在3D4D ...
3D4DA1D6不中有多种原因:1)没有喂给它正确的格式;2)它根本就不支持非ECC格式,因为链接时使用方法lmgr_trl库
把文件放上来大神们分分钟给你搞定
2020-11-15 12:37
1
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
我看到的例子里直到v11.16.6版也没发现job结构有差别。calseed需要的参数都在原来的位置上
2020-11-15 12:45
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
不会吧,我是论坛下载的 11.14 SDK, 在 machind/lmclient.h里,lm_handle 结构体。难道我找错地方了???我刚开始用IDA调试,总是发现job+8后面哪些一直为0,后面才搞明白原来结构体变了。
另外,我怎么上传不了附件,没找到按钮。请问哪里可以上传
2020-11-15 15:10
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
yangmyron 我看到的例子里直到v11.16.6版也没发现job结构有差别。calseed需要的参数都在原来的位置上
不会吧,我是论坛下载的 11.14 SDK, 在 machind/lmclient.h里,lm_handle 结构体。难道我找错地方了???我刚开始用IDA调试,总是发现job+8后面哪些一直为0,后面才搞明白原来结构体变了。
另外,我怎么上传不了附件,没找到按钮。请问哪里可以上传
2020-11-15 15:10
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
yangmyron 3D4DA1D6不中有多种原因:1)没有喂给它正确的格式;2)它根本就不支持非ECC格式,因为链接时使用方法lmgr_trl库 把文件放上来大神们分分钟给你搞定

附件上传,求助找seed。谢谢

我用IDA老是F9就挂,提示

23:51:03 (fuck) Vendor daemon can't talk to lmgrd (Cannot connect to license server system. (-15,10:10061 "WinSock: Connection refused"))

不知道怎么回事,也不是端口占用。

上传的附件:
2020-11-16 00:27
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
直接 lmgrd 能运行daemon, 从 daemon启动为什么就不行呢?百思不得其姐
2020-11-16 01:11
0
雪    币: 6711
活跃值: (4163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13


SIGN=84位授权,lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权。


2020-11-16 01:36
1
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
非常感谢您的帮助,请问一下
1. 那句话 “lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权”,具体是什么意思?找SEED完后替换公钥不行吗?
2. 看到您用的脚本非常高级啊,能否指导一下思路,这个SEED的寻找过程好像和以前您帮人家找的SEED不一样,是这样的吗?
3. 我用IDA调试参数也加上了,怎么调试不了,一下就挂,提示不能和 lmgrd通讯。您的调试参数是怎么样的,能否指点迷津啊,万分感谢。
2020-11-16 10:35
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
厉害了我的谁 SIGN=84位授权,lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权。
求大神指导
2020-11-16 10:36
0
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
ghostiger 非常感谢您的帮助,请问一下 1. 那句话 “lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权”,具体是什么意思?找SEED完后替换公钥不行吗? 2. 看到您用的脚本非常高级啊 ...




最后于 2020-11-16 11:19 被yangmyron编辑 ,原因:
上传的附件:
2020-11-16 11:17
1
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
ghostiger 非常感谢您的帮助,请问一下 1. 那句话 “lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权”,具体是什么意思?找SEED完后替换公钥不行吗? 2. 看到您用的脚本非常高级啊 ...
我有教程发布在:
https://bbs.pediy.com/thread-263475.htm
2020-11-16 12:26
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
多谢您,太热心了。我已经拜读过你几篇文章好几遍了,自己上手的时候发现不对劲。
再请教一下 
1. 调试 daemon时候跟 lmgrd 有没有关系,不需要启动其服务吧。
2. 论坛上说有断点第一次跳走,第二次不跳什么的,可我的断点只是跳一次。
3. 您发现 job 不对了吗?一般都是 66开头,你截图似乎不是这样的。
再次感谢。
2020-11-16 13:56
0
雪    币: 6116
活跃值: (6756)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
ghostiger 多谢您,太热心了。我已经拜读过你几篇文章好几遍了,自己上手的时候发现不对劲。 再请教一下 1. 调试 daemon时候跟 lmgrd 有没有关系,不需要启动其服务吧。 2. 论坛上说有断点第一 ...

1)调试 daemon时候跟 lmgrd 没有关系,而且一定不要启动与该Deamon有关的lmgrd进程,否则会出Lock进程错。
2)你说的只是跳一次跟“第一次跳走,第二次不跳什么的”有啥差别?
3)job结构的Job+0h是什么样的值根本无关紧要,我们只需要job+8h、job+0ch和Job+10h。即使Job+0h确实变了,也不是从V11.14才开始的。如果对这个问题纠结,可以自行下载个版本的SDK进行对比确认。

最后于 2020-11-16 16:55 被yangmyron编辑 ,原因:
2020-11-16 16:16
1
雪    币: 6711
活跃值: (4163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20

1. 那句话 “lmgr_trl 库,找到 SEED 也没有用的,只接受 ECC 授权”,具体是什么意思?找SEED完后替换公钥不行吗?


Flexnet 的授权有 ECC 和无 ECC(License Key). ECC 的就 patch ECC 或替换公钥, 无 ECC 的就找 SEED 制作 lmcrypt 生成 license. 从 11.14 版开始已默认为关闭 TRL(ECC) 授权, MAKEFILE 链接的是 lmgr_trl.lib, 如果要编译无 ECC 授权则需改成 lmgr.lib. 这其中原因是为了制止破解者将程序的授权从 ECC 改成无 ECC 方式. 因此商业软件如果设成 ECC 授权肯定链接了 lmgr_trl.lib, 所以不用找 SEED, 因为找到 SEED 也没有用, 应该直接 patch ECC 或替换公钥.


2. 看到您用的脚本非常高级啊,能否指导一下思路,这个SEED的寻找过程好像和以前您帮人家找的SEED不一样,是这样的吗?


其实是一样的, 只是将以前手工调试的步骤写入脚本, 这样就能省下一些时间. 至于手工调试的方法可以翻阅论坛里很多大佬们的文章.


3. 我用IDA调试参数也加上了,怎么调试不了,一下就挂,提示不能和 lmgrd通讯。您的调试参数是怎么样的,能否指点迷津啊,万分感谢.


一般调试 flexnet daemon 提示不能和 lmgrd 通讯很正常, 因为 daemon 本应由 lmgrd 启动然后相互通讯, 而在直接调试 daemon 时需加入一些参数来骗过 daemon 让它以为自己是被 lmgrd 所启动而不会直接退出, 这样我们就可以达到调试的目的如找 SEED 等等. 之后当 daemon 联系 lmgrd 而得不到回应时就会提示不能和 lmgrd 通讯然后退出.


调试参数

daemon.exe -T Computer_Name 4 -1 -c license.dat


4. 您发现 job 不对了吗?一般都是 66开头,你截图似乎不是这样的.


没记错的话之前看过老 git 文章里有写到 10.x 版之前的 job structure 是 66 00 00 00 开头的而之后的是 00 00 00 00 开头. 不过我们需要用来算 SEED 的部分 job+0x08, job+0x0c 和 job+0x10 还是一样.


2020-11-16 21:39
1
雪    币: 6711
活跃值: (4163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21

录制了手工调试的视频, 对于 11.14 版可以直接搜 seed value 6F7330B8 来找到 _l_sg 接着是 _l_sg 里的关键 call.

2020-11-17 00:21
1
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22

非常感谢两位大神的热心帮助,@厉害了我的谁,@yangmyron


按照你们的方法我可以找ENCRYPTION_seed, 原来是我一直搞错了方法,找错了job的地址,真是晕死了。

--------------

我回顾了一下,可能发现了我的问题所在。

1. 我之前是用了F5反汇编,在执行完call指令后,我在 local watch 窗口右键jump到就是第一个输入参数 job_,去看值,发现进去之后 job + 8 之后一大片都是0x0, 这就是困扰我很久很久的地方。原来local watch 里的 job 地址是 EBP + 8 (见图)与您后面给的 ESP  不一样。而我在local watch 窗口右键 jump 到第三个参数 vendor_code_ 则数值没问题,至少前面两个 data[0] 和 data[1]是每次都是变化的。


到后来我实在走投无路才去查才发现job 结构体 lm_handle确实已经在v11.14做了改变,与 v9.2不同。尽管如此,还是不明白为什么结构体变了找 job + 8 ~20 还能得到正确结果。


2. 我不用F5反汇编后,直接用 [ESP]的地址来找 job 结构体,发现 job + 8 ~ 20都是有值的,我用 calcseed.exe工具进行计算得到了结果。一直都是我自己搞错了。谢谢大家。


上传的附件:
2020-11-17 00:37
0
雪    币: 174
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
ghostiger 非常感谢两位大神的热心帮助,@厉害了我的谁,@yangmyron按照你们的方法我可以找ENCRYPTION_seed, 原来是我一直搞错了方法,找错了job的地址,真是晕死了。------------ ...
对的,你这种方法是万能的,对所有flexlm的daemon都有效,但是不知道yangmyron的是否如此,其实他的也是类似,也是先找到l_sg,然后进入找到job 与  data的位置, 而老的方式就是找到l_n36_buff入口处,然后直接找到入口参数的structure,然后分离出各个参数
2020-11-19 10:21
0
雪    币: 174
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
厉害了我的谁 录制了手工调试的视频, 对于 11.14 版可以直接搜 seed value 6F7330B8 来找到 _l_sg 接着是 _l_sg 里的关键 call.
对的,你这种方法是万能的,对所有flexlm的daemon都有效,但是不知道yangmyron的是否如此,其实他的也是类似,也是先找到l_sg,然后进入找到job 与  data的位置, 而老的方式就是找到l_n36_buff入口处,然后直接找到入口参数的structure,然后分离出各个参数
2020-11-19 10:21
0
游客
登录 | 注册 方可回帖
返回
//