2024年4月1日发(作者:)

标 题: 【原创】制作Flexlm license总结!

作 者: laoqian

时 间: 2005-12-15,17:45:50

链 接: /?t=19435

作者: laoqian [FCG]

时 间:2005-12-15

软件名称: Zendenc (FLEXlm 7.1d)

软件类别:Nolan Blender提供的经典例子

软件介绍: FLEXlm 7.1d加密

破解工具:ollydbg 1.10(FLY修改) ,w32Dasm_2002828_pll621,UltraEdit10.0,

Flexlm7.2 SDK,calcseed,lmkg7,lmcryptgui,flexlm9.2

sdk的源码等

破解目的:制作无限制使用license文件

通过这篇文章我们将向你介绍如何制作FlexLm的license,并总结经验

第一部分: 废话

Zendenc这个软件是Nolan Blender提供的经典例题,crackZ或网上有下载和分析文章。玩了几个

Flexlm, 想总结一下, 就拿它来开刀方便!本

文是关于7.x的,但有部分适用于8.x和9.x,甚至10.x。

第二部分: 转入正题

破解FlexLm最主要的是找到4样东西.

1. 确定版本号

2. 找vendor

3. 计算ENCRYPTION_SEED

4. 找FEATURE

有了这几个,就可以使用FlexLm SDK(如果你有)或工具做出注册机了.

btw:FlexLm SDK一般是通用兼容的的,比如7.2就可以制作7.1的,甚至有时7.1也可以制作7.2的,

关键是参数设置。

1. 确定FlexLm版本号 BEHAVIOR Version

方法一:

* 用二进制编辑器,推荐使用HexWorkshop(我用UltraEdit10.0,呵呵),它的查找功能很强,特别是

Find All Instances更是我最最常用的.

在查找对话框Type中选择类型Text String,Value中输入"@(#) FLEXlm v",查找,"@(#) FLEXlm v"后面的

就是版本号.

【以上是tulipfan[CCG]大虾说的】

方法二:

用Flexlm SDK里的lmtools(在flexlmv7.1i86_n3目录里),运行进入Utilities,点击“Browse”

查找你的Flexlm加密的程序主exe或dll,

然后“find version”,在下面就会显示你的Flexlm版本,用v7.1版甚至可以看到8.3版以后,是通用

的。有个别程序可能此法不行!

方法三:在反汇编以后,搜索“87654321”,在前面设断点

在Flexlm SDK里lm_code.h文件里你可以看到一下几句:

代码:

* Vendor's private seeds, -- replace with 32-bit numbers that

* you make up.

*/

#define ENCRYPTION_SEED1 0x87654321

#define ENCRYPTION_SEED2 0x12345678

/*

* FLEXlm vendor keys -- enter as received from Globetrotter.

* Changing these keys has NO impact on license files (unlike

* the ENCRYPTION_SEEDs).

*/

/*-

* Generate these keys with: lmvkey -v demo -d (+3 months) -p ALL -c DEMO

* (Use a date approx 3 months out)

*/

这说明demo的SEED1=0x87654321,SEED2=0x12345678

对应Zendenc里是:

代码:

0043391D E8 184B0400 call

00433922 83C4 0C add esp,0C

00433925 8D8D 40FFFFFF lea ecx,dword ptr ss:[ebp-C0] ;我们可以在这里设断点!

0043392B 51 push ecx

0043392C 8B95 30FFFFFF mov edx,dword ptr ss:[ebp-D0] ;ebp-D0地址是以后要用的!

00433932 81C2 4C010000 add edx,14C ;计算得到VENDOR地址

00433938 52 push edx ;VENDOR入栈!(ASCII "zend")

00433939 8B85 30FFFFFF mov eax,dword ptr ss:[ebp-D0]

0043393F 50 push eax

00433940 E8 95560000 call zendenc.00438FDA ;这个call就是著名的所谓7648B98E标志

call!后面要进去的!!!

00433945 83C4 0C add esp,0C

00433948 81BD 44FFFFFF 214>cmp dword ptr ss:[ebp-BC],87654321 ;此处比较是否是demo的

seed1,当然在此seed1已被加密!