首页
社区
课程
招聘
[旧帖] [求助]新手学习flexlm遇到的问题 0.00雪花
发表于: 2009-2-21 17:42 19350

[旧帖] [求助]新手学习flexlm遇到的问题 0.00雪花

2009-2-21 17:42
19350
最近心血来潮, 想学习下flexlm技术, 不为去卖破解赚钱, 只想做研究学习之用。 在看雪上转了个把星期, 看了不少文章, 现在已经大概的了解了流程, 但在有些方面仍然看不大懂。 斗胆发个帖子, 将我遇到的问题汇总一下, 恳请各位前辈不吝赐教。

先介绍一下接触的几个例子和学习资料。
主要学习资料:
1. 入门知识: http://bbs.pediy.com/showthread.php?t=60864&highlight=flexlm 《加密与解密》第二版  13.6 Flexlm保护
2. 实战参考: 【原创】制作Flexlm license总结! By laoqian; FLEXLM9.5该洗洗睡了吧 by newsearch

分析案例: 1. Zendenc , 2. Imaris 4.13
Zendenc 下载自woodmann, newsearch 大虾翻译过的“翻译:Zendenc FLEXlm 7.2 破解信息[TT]”
Imaris 4.13 下载来自互联网。 安装路径为默认。
Bitplane.exe 文件位置 c:\programe files\bitlane\Imaris 4\flexlm

分析这两个例子的时候遇到了一些问题。
一 .寻找 feature
使用程序: Imaris 4.13
用OD打开bitplane.exe, 在反汇编窗口中右键选择查找所有参考文本字串, 在参考文本字串窗口中查找“lm_ckout.c”, 找到挨着的2个设断点,按F9。 程序没有在断点停止, 而是直接terminated了, 不明就里, 请各位指点。
另, 问题之二: 如果有多个feature如何通过这种方法来查找?
二 .在定位了l_sg函数之后, 不能第二次到达。
使用程序: Imaris 4.13
如下 断在0041c536、 0041C58F。 F9第一次断在 0041c536, 再按F9, 就直接terminated

0041C536  /$  55            push    ebp
0041C537  |.  8BEC          mov     ebp, esp
0041C539  |.  83EC 24       sub     esp, 24
0041C53C  |.  C645 EC 00    mov     byte ptr [ebp-14], 0
0041C540  |.  33C0          xor     eax, eax
0041C542  |.  66:8945 ED    mov     word ptr [ebp-13], ax
0041C546  |.  8845 EF       mov     byte ptr [ebp-11], al
0041C549  |.  C745 F4 B8307>mov     dword ptr [ebp-C], 6F7330B8
0041C550  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
0041C557  |.  C745 F8 00000>mov     dword ptr [ebp-8], 0
0041C55E  |.  C745 F0 03000>mov     dword ptr [ebp-10], 3
0041C565  |.  8B4D 08       mov     ecx, dword ptr [ebp+8]
0041C568  |.  8B51 6C       mov     edx, dword ptr [ecx+6C]
0041C56B  |.  8B82 540F0000 mov     eax, dword ptr [edx+F54]
0041C571  |.  25 00800000   and     eax, 8000
0041C576  |.  85C0          test    eax, eax
0041C578  |.  74 23         je      short 0041C59D
0041C57A  |.  833D F0E74D00>cmp     dword ptr [4DE7F0], 0
0041C581  |.  74 1A         je      short 0041C59D
0041C583  |.  8B4D 10       mov     ecx, dword ptr [ebp+10]
0041C586  |.  51            push    ecx
0041C587  |.  8B55 0C       mov     edx, dword ptr [ebp+C]
0041C58A  |.  52            push    edx
0041C58B  |.  8B45 08       mov     eax, dword ptr [ebp+8]
0041C58E  |.  50            push    eax
0041C58F  |.  FF15 F0E74D00 call    dword ptr [4DE7F0]               ;  

看了几位大虾的文章, 自己觉得问题可能如下:
1.        环境变量设置有问题。
2.        License文件不正确。
对于第一条,在我的电脑-属性-高级-环境变量-系统变量中添加, LM_LICENSE_FILE, 值为C:\Program Files\Bitplane\Imaris 4\flexlm\bitplane.lic。 设置之后, 问题仍然存在。
对于第二条, 在下载的文件当中(Imaris)中有一个正确的license, 经测试是可以使用的, 所以排除此条的错误的可能。

请各位高手指点一下。
三. seed关键数据为什么一直在变, 每次都不同?
使用的测试软件: Zendenc
问题: 跟踪出的data[0], data[1], job+08, job+0c, job+10 总不是定值, 每次都不同, 而且都与范例中不同。

以上三点琢磨了几天未果, 整理出来发个帖子, 请大家给指点迷津! 十分感谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
经过各位大虾的指点, 现在问题3已经解决, 虽然那几个关键点不同, 但是计算出的seeds是一样的。

回到第二点l_sg函数不能第二次返回的问题。 在zendenc的例子中, 如果license文件文件名或位置不对, 在F9时会有选择license或者指定license file的提示; 由此可以推测, l_sg不能第二次到达原因估计是找不到license文件。 我尝试着添加环境变量和修改license文件名, 都看不到效果。
继续请大虾指点
2009-2-23 09:45
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
laoqian大虾的帖子中给了答案, 以前看得不仔细:

这类程序使用了自定义检测函数来检测license文件

问题又来了, 那怎么办??
2009-2-23 22:36
0
雪    币: 324
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
首先想确认一个事情,bitplane.exe是daemon还是客户端程序。本人没研究过Imaris程序,不清楚。

1,如果是守护神程序,那它在启动license服务的时候是没有license的checkout的,你可以从启动的log看出来,根本没有feature的checkout。
2,如果是客户端程序,那如果下断的地方没问题,只要程序能正常检测license,那没有理由不停在_lc_checkout。你可以启动一个license server服务,看对应log有没有feature的checkout即明白。
3,自定义检测函数?到现在貌似还没碰到过。。。
2009-2-24 09:40
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢NoFlexlm的回答。
bitplane.exe 是daemon程序。。。 后来找到客户端程序, od打开, 下断之后顺利找出feature。 看来我是典型的缘木求鱼, 找错地方了。 汗一个, 水平还真差。
另: NoFlexlm老兄, 关于l_sg 函数不能第二次到达, 请问您有什么见解?
是不是我又找错地方了?
如何通过deamon程序来找seeds? 本来觉得有点清楚了, 现在又糊涂了。 请大虾指点
2009-2-24 10:56
0
雪    币: 324
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
答案很简单,只有程序在验证license的时候才可能会调用l_sg。第一次一般是_lc_init在调用,初始化一些参数。后面的每个feature基本上都会调用这里,而且会跳到_l_n36_buff。而这个地方是发现vc和job,然后用calcseed算seeds的关键点。

Good luck!

2009-2-24 16:05
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
按照你的提示, 我用od打开主程序。 顺利找出了seeds。 (还未验证是否正确, 我想到的办法是用这个seeds做个license出来, 看程序是否能运行, 比较笨, 应该也不科学)
还有一事不明, 我看大虾你只需要daemon就能找出seeds, 请问是为什么?
既然只有dameon不读取license, 那你是如何找seeds的呢?
或者还是我哪里概念不清楚, 请指点。 谢谢!!
2009-2-24 22:14
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
在论坛翻帖子, 看到noflexlm老兄在一个帖子中提到 KWULTGER.exe。 (链接地址: http://bbs.pediy.com/showthread.php?t=79583&highlight=flexlm)

我也在该帖子下载了该vendor程序, 也找到了
代码:
.text:00408AAD                 mov     eax, [ebp+arg_8]
.text:00408AB0                 push    eax
.text:00408AB1                 mov     eax, [ebp+arg_4]
.text:00408AB4                 push    eax
.text:00408AB5                 mov     eax, [ebp+arg_0]
.text:00408AB8                 push    eax
.text:00408AB9                 call    dword_476EAC


但是在00408ab9的地方下断, 只有vendor的话, 我无法使他停在这里
请老兄指点!

我找这行的办法: 搜索constent 87654321, 由此找到l_sg函数。
2009-2-25 09:19
0
雪    币: 324
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
如果只调试daemon程序,那肯定不会检查license,就像你在command窗口执行daemon.exe,结果会如何呢?
调试daemon程序是需要带参数的,好好在论坛里找找看。
2009-2-25 15:32
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
多谢指点, 我翻到一篇文章: FLEXlm latest information by CrackZ
里面提到: “大多FLEXlm程序的vendor deamon没有用_l_n36_buf()配置标记,这使得他们很容易用:lmgrd –z deamon_name –c license_file来回收SEED......."
不知道是不是这篇文章。
晚上回去继续研究, 多谢NoFlexlm
2009-2-25 15:54
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢noflexlm的email。 我一直在看雪论坛找来的, woodmann不熟, 看来以后得常去了。

在老兄提供的链接中指出:
参数的格式
"vendor daemon -T hostname 7.2* -1 -c c:\path\license.lic"

在看雪坛子上找到一个:
(1)od打开,在调试参数里输入nilm -T 主机名 11.4 -1 -c "c:\flexlm\LabVIEW.lic"

按照上面的两条写, 愣是不起作用。 相当郁闷。
还在尝试中; 找到一个误解的地方, lmgrd的版本后面的参数 -1 是“L” 不是“一”

还是以Imaris为例, 我写的参数是: Bitplane -T TEST 9.50 -l -C "C:\flexlm\bitplane.lic"
TEST是我测试用的虚拟机计算机名。
2009-2-26 10:35
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
在cmd中执行 Bitplane -T TEST 9.50 -l -C "C:\flexlm\bitplane.lic"
提示如下:
10:49:19 (bitplane) FLEXlm version 9.50
10:49:19 (bitplane) lmgrd version 9.50, bitplane version 9.5

10:49:19 (bitplane) Cannot open license file C:\flexlm\license.dat

在lmgrd的目录下, 执行lmgrd bitplane -z
提示如下:
license manager: can't initialize: Cannot find license file
The license files (or server network addresses) attempted are
listed below.  Use LM_LICENSE_FILE to use a different license file,
or contact your software provider for a license file.
Filename:      C:\flexlm\license.dat
License path:  C:\flexlm\license.dat
FLEXlm error:  -1,359.  System Error: 2 "No such file or directory"
For further information, refer to the FLEXlm End User Manual,
available at "www.macrovision.com".
10:50:41 (lmgrd) Using license file "C:\flexlm\license.dat"
看样子是提示路径或文件名不对, 但是我的license文件就是放这个文件夹的。。。

继续试验。。。
2009-2-26 10:49
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
又进一步, license文件中主机名不正确。
2009-2-26 17:59
0
雪    币: 1309
活跃值: (207)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
楼主接着写呀
2009-8-28 16:11
0
雪    币: 519
活跃值: (4774)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
参数不对。。。
2009-8-28 21:43
0
雪    币: 8
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我也想知道怎么来调试DEAMON,楼主可以给个联系方式共同研究?
2009-12-12 12:26
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
强烈希望楼主能继续写下去,最后是不是因为环境变量设置不对?
2010-3-7 22:14
0
游客
登录 | 注册 方可回帖
返回
//