首页
社区
课程
招聘
LabView 7.1 FlexLM8.4a破解
发表于: 2007-3-18 16:10 27256

LabView 7.1 FlexLM8.4a破解

2007-3-18 16:10
27256

【软件名称】LabView 7.1
【应用平台】Win2000 SP4
【作者邮箱】chubing6143@sina.com
【使用工具】OllyDbg1.10,FlexLM 7.2 SDK
【软件限制】FlexLM8.4a
【软件简介】NI的产品,做测试和虚拟仪器的大家可能都知道了。 该软件其实在安装时提供的有不限制的Licence文件,但是作为练手,我将其删除掉了(这样我不用担心任何后果了)。

1. 确定FlexLm版本号 BEHAVIOR Version
* 用二进制编辑器,推荐使用HexWorkshop打开LabView.exe,它的查找功能很强,特别是Find All Instances更是我最最常用的.
在查找对话框Type中选择类型Text String,Value中输入"@(#) FLEXlm v",查找,"@(#) FLEXlm v"后面的就是版本号.
【以上是tulipfan[CCG]大虾说的】
@(#) FLEXlm v8.4a (lmgr.lib)可以知道 FlexLm版本号 BEHAVIOR Version是8.4a

2. 找FEATURE
目的:确定FEATURE和产品版本号(不是FLEXLM的版本号)
方法:在字符串参考中查找'lm_ckout.c';总共也就出现几次,比较容易确定。

据newsearch讲“一般是挨着的两个才是;另外有四个挨着的不是。”
根据这一原则,在OD中BP C9EBFC,然后F9运行,
程序被中断下来,此时察看堆栈情况如下所示:
0012E3E8    01B34178  |Arg1 = 01B34178
0012E3EC    00EE25E4  |Arg2 = 00EE25E4 ASCII "lm_ckout.c"
0012E3F0    00000093  \Arg3 = 00000093
0012E3F4    00C99EF4  LabVIEW.00C99EF4
0012E3F8    01B34178
0012E3FC   /0012E46C
0012E400   |00C81BAD  返回到 LabVIEW.00C81BAD 来自 LabVIEW.00C9EBD0
0012E404   |01B34178
0012E408   |018BF908  ASCII "LabVIEW_LabVIEW"
0012E40C   |018BEF28  ASCII "7.0100"
可以确定
FEATURE版本 v7.0100
FEATURE ID,LABVIEW _LABVIEW

3. 找vendor以及计算seed的关键数据
在反汇编以后,搜索“87654321”,在前面设断点
00C9393C  |.  8D8D 80FDFFFF LEA ECX,DWORD PTR SS:[EBP-280]
00C93942  |.  51            PUSH ECX                                 ; /Arg3
00C93943  |.  8B95 6CFDFFFF MOV EDX,DWORD PTR SS:[EBP-294]           ; ebp-294地址是以后要用的!
00C93949  |.  81C2 0C030000 ADD EDX,30C                              ; 计算得到VENDOR地址
00C9394F  |.  52            PUSH EDX                                 ; VENDOR入栈!(ASCII "nilm")
00C93950  |.  8B85 6CFDFFFF MOV EAX,DWORD PTR SS:[EBP-294]           ; |
00C93956  |.  50            PUSH EAX                                 ; |Arg1
00C93957  |.  E8 07E80000   CALL LabVIEW.00CA2163                    ; 这个call就是著名的所谓7648B98E标志call!后面要进去的
00C9395C  |.  83C4 0C       ADD ESP,0C
00C9395F  |.  81BD 84FDFFFF>CMP DWORD PTR SS:[EBP-27C],87654321
00C93969  |.  74 0C         JE SHORT LabVIEW.00C93977
00C9396B  |.  81BD 88FDFFFF>CMP DWORD PTR SS:[EBP-278],12345678

我们在00C9393C停下d EBP-280
0012E244  00000004   ...
0012E248  7E58C8CF  先X~
0012E24C  9B7AB0C4  陌z
0012E250  D7B636AA  ?蹲
0012E254  C9A6F893  ?ι
0012E258  B1CDE046  F嗤
0012E25C  A5254D00  .M%
0012E260  00040008   . .
0012E264  38300061  a.08
0012E268  0000332E  .3..

我们得到BEHAVIOR Version  V8.3a
VENDOR为"nilm"

根据需要我们做一个假的LabVIEW_LabVIEW_070100.lic,放在C:\Program Files\National Instruments\Shared\License Manager\Licenses目录里下:
FEATURE LabVIEW_PKG nilm 7.0100 permanent uncounted VENDOR_STRING="Cracked \
        by laowanghai" HOSTID=ANY SIGN=123456789012
然后重新加载程序,根据前面寻找Vendor的过程可以知道CALL LabVIEW.00CA2163这个call就是著名的所谓7648B98E标志call!因此BP  00CA2163,F9运行
00CA2163  /$  55            PUSH EBP
00CA2164  |.  8BEC          MOV EBP,ESP
00CA2166  |.  83EC 24       SUB ESP,24
00CA2169  |.  C745 F4 B8307>MOV DWORD PTR SS:[EBP-C],6F7330B8                     ; ====就是这个数在确定l_sg函数上很有用
00CA2170  |.  C745 F0 03000>MOV DWORD PTR SS:[EBP-10],3
00CA2177  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
00CA217A  |.  8B48 6C       MOV ECX,DWORD PTR DS:[EAX+6C]
00CA217D  |.  8B91 A8030000 MOV EDX,DWORD PTR DS:[ECX+3A8]
00CA2183  |.  81E2 00800000 AND EDX,8000
00CA2189  |.  85D2          TEST EDX,EDX
00CA218B  |.  74 23         JE SHORT LabVIEW.00CA21B0                               ; ====这个跳第一次肯定会跳的!第二次再来!
00CA218D  |.  833D 70EBF200>CMP DWORD PTR DS:[F2EB70],0
00CA2194  |.  74 1A         JE SHORT LabVIEW.00CA21B0
00CA2196  |.  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
00CA2199  |.  50            PUSH EAX
00CA219A  |.  8B4D 0C       MOV ECX,DWORD PTR SS:[EBP+C]
00CA219D  |.  51            PUSH ECX
00CA219E  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
00CA21A1  |.  52            PUSH EDX
00CA21A2  |.  FF15 70EBF200 CALL DWORD PTR DS:[F2EB70]                           ; ====在这个地方下断,F8之后就是我们要的!
00CA21A8  |.  83C4 0C       ADD ESP,0C
00CA21AB  |.  E9 13010000   JMP LabVIEW.00CA22C3

F9执行,中断在00CA2163。
这时第一次来到00CA218B时它是要跳过去的,注意要跳就让他跳吧。
若开始第一次时强制不跳,倒是能来到00CA21A2,结果跟出了错误的seed1和seed2,而且多少次结果还都一样。
再次F9,我们又回来中断在00CA2163,F8单步执行,这次不跳了,直到过了00CA21A2,暂停!
我们在命令栏下如下命令,可以看到:(可以纪录了多次的调试结果)
输入 d [esp+4]  在内存窗口看到,【长型――ASCII 转存】
01B24484  6D6C696E  nilm

输入 d [esp+8] 在内存窗口看到,【长型――ASCII 转存】
0012DCD0  00000004   ...
0012DCD4  8216F92E  .?   data[0]
0012DCD8  67348125  %?g  data[1]
0012DCDC  B266513C  <Qf
0012DCE0  C11AF607  ?
0012DCE4  B918EEBE  绢
0012DCE8  C0F52DF8  ?趵
0012DCEC  00040008   . .
0012DCF0  38300061  a.08
0012DCF4  0000332E  .3..

输入d [esp] 【长型――ASCII 转存】
01B24178  00000066  f...
01B2417C  002100E7  ?!.
01B24180  3C0DCF4B  K?<   job+08
01B24184  00B12ACE  ??    job+0c
01B24188  00D40000  ..?   job+10

这些数据就是我们计算seed1和seed2的关键!

4. 计算ENCRYPTION_SEED
使用工具calcseed.exe,输入data[0],data[1],job+08,job+0c,job+10,VENDORname为 "nilm"上述信息,计算
ENCRYPTION_SEED1 0xa81b372e
ENCRYPTION_SEED2 0x4d394f25

至此,分析已经基本完成,可以使用SDK写license文件了。

5制作license.dat
我们得到数据如下:
FEATURE版本 v7.01
FEATURE id,LABVIEW_LABVIEW
vendor: nilm
ENCRYPTION_SEED1 0xa81b372e
ENCRYPTION_SEED2 0x4d394f25
BEHAVIOR Version  V8.3a

使用lmkg.exe,选择version 7.0,在vendor_id输入"nilm"得到:
/* Version 7 keys */
#define VENDOR_KEY1 0x6b55b25a
#define VENDOR_KEY2 0xe74d99f2
#define VENDOR_KEY3 0xaa7e7ee6
#define VENDOR_KEY4 0x93a6eec9
#define VENDOR_KEY5 0x1821d5fe
#define CRO_KEY1 0x6f75b052
#define CRO_KEY2 0xa16ffb74

#define VENDOR_NAME "nilm"
然后编辑lm_code.h如下所示:

#ifndef LM_CODE_H
#define LM_CODE_H
#include "lm_cro.h"
#define LM_STRENGTH LM_STRENGTH_DEFAULT
#define ENCRYPTION_SEED1 0xa81b372e//计算出来的
#define ENCRYPTION_SEED2 0x4d394f25//计算出来的
#define ENCRYPTION_SEED3 0x11223344
#define ENCRYPTION_SEED4 0x55667788
#define VENDOR_KEY1 0x6b55b25a//计算出来的
#define VENDOR_KEY2 0xe74d99f2//计算出来的
#define VENDOR_KEY3 0xaa7e7ee6//计算出来的
#define VENDOR_KEY4 0x93a6eec9//计算出来的
#define VENDOR_KEY5 0x1821d5fe//计算出来的
#define CRO_KEY1 0x6f75b052//计算出来的
#define CRO_KEY2 0xa16ffb74//计算出来的
#define VENDOR_NAME "nilm"//找到的哦
#define LM_VER_BEHAVIOR LM_BEHAVIOR_V7_1
#endif /* LM_CODE_H */

打开\flexlm\v7.2\i86_n3\genlic.exe开始我们的制作吧
1.basic窗口内填好Feathure “LABVIEW_LABVIEW”,选择permanent打勾,选择run anywhere
2.进入advance窗口,version内填FEATURE的Version就是7.010,Vendor info填上Cracked by laowanghai
3.其余不改了,回到basic窗口,点击make license,然后save你的license文件
大功告成!
生成的如下:

FEATURE LABVIEW_LABVIEW nilm 7.010 permanent uncounted \
        VENDOR_STRING="cracked by laowanghai" HOSTID=ANY \
        SIGN=80A999623E02

6明码比较(laoqian文章中的方法)
通过搜索“66D8B337”可以定位到下面的代码:
00CA5A71   |.  A2 290DF300            mov byte ptr ds:[F30D29],al
00CA5A76   |.  C605 2F0DF300 00       mov byte ptr ds:[F30D2F],0
00CA5A7D   |.  8A15 2F0DF300          mov dl,byte ptr ds:[F30D2F]
00CA5A83   |.  8815 2E0DF300          mov byte ptr ds:[F30D2E],dl
00CA5A89   |>  C785 74FEFFFF 08000000 mov dword ptr ss:[ebp-18C],8
00CA5A93   |.  817D 18 37B3D866       cmp dword ptr ss:[ebp+18],66D8B337
00CA5A9A   |.  75 0F                  jnz short LabVIEW.00CA5AAB
在CA5A9A处下断点,运行到此处时,d 0xf30d29
可以看到:
00F30D25  80000000  ...€
00F30D29  3E6299A9  b>
00F30D2D  A2000002   .
因此正确的SIGN就是80A999623E02 。


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

收藏
免费 7
支持
分享
最新回复 (27)
雪    币: 559
活跃值: (587)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
抢个沙发
2007-3-18 16:28
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
3
好文
2007-3-18 17:13
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
4
这个要顶
写得很精炼
2007-3-18 21:10
0
雪    币: 97697
活跃值: (200834)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
sustain.
2007-3-18 21:13
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
高手 !!!!!
2007-3-20 17:39
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

2007-3-20 18:54
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
简明,扼要,经典!
支持!
2007-3-21 18:46
0
雪    币: 8924
活跃值: (5147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jgs
9
老钱又出手了,支持!
2007-3-23 11:25
0
雪    币: 175
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wxd
10
明明是Version  V8.3a,楼主却使用lmkg.exe,选择version 7.0,这可以吗?
2007-3-31 14:15
0
雪    币: 69
活跃值: (342)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
11
我试了可以的.
2007-4-6 22:16
0
雪    币: 69
活跃值: (342)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
12
我不是老钱,老钱 是我的偶像,当然他不认识我这种菜鸟了。
2007-4-6 22:18
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
为什么,提供失败呢!直接按楼主的信息编辑也失败,无法启动GENLIC32.EXE.
如果生成120字符的LIC呢?要如何操作定义的!
2007-8-7 01:01
0
雪    币: 2411
活跃值: (1412)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
到今天還是沒辦法使用 Genlic32
直接把 SDK 解開, 不能用嗎?
是不要還要裝 VC, 還有重新 MAKE 之後才行?
2007-8-7 14:40
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
按照楼主的教法,可以启动GENLIC.EXE程序来生成许可证,但生成的许可证文件总是没有SIGN,请问这是为何叱?
后来采用LMCRYPTGUI来生成许可证,虽然可生成,但问题又来了. 已制作出LIC文件,采用LMTOOLS.EXE服务程序来验证是可以使用的.但运行程序后就不能使用了(可以跳过服务器验证窗口,即加密狗),这是为什么呢,是哪里问题呢?请哪位高手帮忙解答下,在此谢谢了,急呀~!~!~!~!~!

还有一问,现制作出的LIC文件里面,SIGN=1A6D4A18159A,
但原正版许可证里面,SIGN="194A E050 3DF8 511E \
我想请教下,这有什么不同吗?是否可以转换呢?采用原许可证修改时间就可以使用的.

期待高手帮忙解决下!
2007-8-9 00:27
0
雪    币: 135
活跃值: (191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
SIGN超过12位的肯定是启用ECC保护了。
办法只有在打补丁,强制交验通过;

传统的S1/S2还是有效的。

关键看你能否找到_l_pubkey_verify()函数的位置了!

我试了很多次,不成功!

祝你好运!
2007-8-9 15:49
0
雪    币: 69
活跃值: (342)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
17
SIGN超过12位的肯定是启用ECC保护了,我个人觉得其实很多软件中能想办法找到明码比较的地方,当然如果不能的话,就只能爆破了,ECC保护,我没有办法破了。
2007-9-2 10:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主,我的一个软件是由license加密的,我以前的软件都是由物理地址加密的,请问HOSTID=FLEXID是怎么得来的,是怎么限制一个license对应一台电脑的,应该怎么样破解,谢谢各位大侠了......
2007-9-17 21:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
L**V***7.1 好像不用任何的license就可以用耶
到是8.0之後就需要 valid .lic
新的8.5x 是用FLEXnet Licensing v11.1.1.0 build 23718 (lmgr.lib)
Team TBE有出了license generator .... 不曉得如何寫的
2008-3-13 22:15
0
雪    币: 135
活跃值: (191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不管Flexnet的版本是多少,基本的机制还是没有太的变化。
1、没有ECC的对象,找到encrypted_seed1/2就可以了,用lmcryptGUI.exe就可以了。
2、有ECC的对象,除了上述的内容之外,还需要对于l_pubkey_verify()打补丁,强制让他返回正常值;但是做lmcrypt.exe还是需要SDK加以配合的。

2008-3-15 09:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
SIGN剛好是12位...應該沒有ECC patcher?
2008-3-15 11:10
0
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
22
很好,
很强大,很暴力
2008-3-15 11:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
LabVIEW 8.5.1的FLEX Version :
FLEXnet Licensing v11.1.1.0 build 23718 (lmgr.lib)
2008-8-7 01:33
0
雪    币: 159
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
关注中,请以后多指教!!!
2008-9-1 20:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
LabVIEW 8.6的FLEX Version :
FLEXnet Licensing v11.1.1.0 build 23718 (lmgr.lib)
仍然沒有更動版本...
2008-9-13 23:55
0
游客
登录 | 注册 方可回帖
返回
//