根据给定的文件信息,本文将详细介绍如何制作Codewarrior License的过程,主要涉及的步骤包括确定FlexLm版本号、查找FEATURE、寻找vendor以及计算ENCRYPTION_SEED等内容。
### 第1章 Codewarrior License 制作教程
#### 1.1 准备工作
在开始之前,我们需要准备一些必要的工具,这些工具将帮助我们完成License的制作。具体包括:
- **Lmtools**:FlexLM许可管理系统的工具集,用于管理和配置许可服务器。
- **OllyICE**:一款功能强大的调试器,用于反汇编和调试软件。
- **Calcseed**:用于计算加密种子的工具。
- **Lmcryptgui**:图形界面工具,简化了密钥和许可证文件的创建过程。
确保这些工具已经正确安装,并且熟悉它们的基本操作。
#### 1.2 制作步骤
##### 1.2.1 确定FlexLm版本号
我们需要确定FlexLm的版本号,这一步非常重要,因为不同的版本可能使用不同的协议。通过Lmtools工具,我们可以轻松地找到所需的版本号。
- 运行Lmtools程序。
- 选择“Utilities”标签页。
- 浏览并定位到Codewarrior的安装目录下的`bin`文件夹中的`lmgr8c.dll`文件。
- 点击“FindVersion”按钮,如图1.1所示,即可得到FlexLm的具体版本号。

##### 1.2.2 找FEATURE
接下来,我们需要找到与许可证相关的FEATURE。这一步通常涉及到对软件内部代码的分析。
- 使用OllyICE打开Codewarrior的IDE程序。
- 查找含有特定字符串(例如“lm_ckout.c”)的代码片段。
- 在这些代码片段中设置断点,执行程序并观察堆栈信息。
- 通过堆栈信息可以找到FEATURE(如“Win32_CWIDE_Unlimited”)和其对应的版本号(例如5.5),如图1.7所示。

##### 1.2.3 找vendor
Vendor信息也是许可证文件中必须包含的重要信息之一。为了找到它,我们需要进行以下步骤:
- 使用OllyICE打开Codewarrior的IDE程序。
- 查找包含特定常量(例如“87654321”)的代码片段。
- 在这些代码片段中设置断点,执行程序并观察寄存器窗口。
- 通过寄存器窗口的信息可以找到vendor信息,如图1.10所示。

##### 1.2.4 找计算seed的关键数据
为了计算ENCRYPTION_SEED,我们需要找到一些关键的数据。这个过程涉及到对软件内部逻辑的深入分析。
- 创建一个假的license.dat文件,并放置在Codewarrior的安装目录下。
- 使用OllyICE打开IDE程序,并找到含有特定常量的代码片段。
- 在这些代码片段中设置断点,执行程序并逐步跟踪执行流程。
- 观察内存窗口中的信息,从中可以获取到计算seed所需的关键数据,如图1.13所示。
![图1.13 键入“d[esp+4]”命令](#)
通过以上步骤,我们可以获得计算ENCRYPTION_SEED所需的所有关键数据。
##### 1.2.5 计算ENCRYPTION_SEED
有了所有必需的信息后,我们现在可以使用Calcseed等工具来计算ENCRYPTION_SEED。
- 输入已找到的FEATURE、vendor以及其他相关信息。
- 调整参数直至获得正确的ENCRYPTION_SEED值。
##### 1.2.6 制作License生成器
在获得所有必要的信息后,可以利用Lmcryptgui等工具来制作License生成器,以便于批量生产License文件。
- 设置好各个参数,包括FEATURE、vendor、ENCRYPTION_SEED等。
- 保存配置,并生成License生成器。
##### 1.2.7 生成License
最后一步是使用License生成器来生成实际的License文件。
- 按照之前配置的参数,生成License文件。
- 验证生成的License是否有效。
通过上述详细的步骤,我们可以成功地制作出Codewarrior的License文件。需要注意的是,本教程仅供学习和技术交流之用,不得用于任何非法活动。在实际操作过程中,请确保遵循所有相关法律法规。