什么是MATLAB编译器?

MATLAB/Simulink (MathWorks, Inc.) 是一种数值计算软件,因其丰富的功能和出色的数据可视化能力,备受众多行业的工程师青睐。

尽管Matlab所完成的算法和模拟器对于非工程师来说极难使用,但MATLAB/Simulink仍然是AI算法开发和模拟器(包括物理模型)设计的最佳选择。

MATLAB编译器可以创建可执行文件作为独立应用程序运行,因此其可以更广泛地向公众发布。近期其新增的Simulink编译器,可以对Simulink模型执行相同的操作,并可将它们转换为独立的GUI应用程序。

能够使用授权的优点

如果MATLAB编译器创建的独立应用程序不使用许可证,则比较方便复制传播,更有利于广泛地分发给大量用户,然而这也意味着没有技术手段来限制用户的使用次数或使用期限。

这就驱使需要一个第三方授权解决方案,采用高级算法控制预期的使用范围和使用时间、管控合法授权的数量以及保护软件当中所包含的知识产权。

威步专有技术CodeMeter,通过加密、保护和授权应用程序,向最终用户提供正确的许可配置和使用方式用于满足以上需求。CodeMeter许可证可以存储在硬件加密狗、绑定到已知设备的软许可容器或云许可容器中。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(1)

图1:比较有和没有CodeMeter许可的例子

CodeMeter应用于MATLAB示例程序

在MATLAB示例程序的代码中封装MATLAB函数逻辑,用以创建“magic square”例子作为独立应用程序。采用CodeMeter技术保护此示例应用程序,并将许可证和密钥存储在CmDongle硬件加密锁中,仅在插入加密锁时,受保护的应用程序方能运行。CodeMeter也可以通过软授权容器或云授权容器中应用于其他各种应用场景。

尝试按原样运行独立应用程序。

独立应用程序已经在MATLAB端创建,安装MATLAB运行时,且“For_redistribution”文件夹已经复制到分发端(目标PC)。

在“For_redistribution”文件夹中启动MyAppInstaller_web.exe安装程序。

创建C:\Program Files\magicsquare文件夹。

首先,在不更改文件夹的情况下启动”magic square”应用程序。

“magic square”应用程序没有GUI,只有一个命令提示符,您可以在其中输入magic square(魔方)的大小(矩阵尺寸)作为参数。

>application>magicsquare 5

在下面的屏幕截图中,您可以看到5x5和3x3两个不同尺寸的魔方。应用程序启动并显示5x5和3x3不同尺寸的魔方,这表明这里没有授权限制。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(2)

图2:使用MATLAB编译器创建的独立应用程序(Magic Square)的执行屏幕

使用CodeMeter申请许可证

使用CodeMeter AxProtector保护独立应用程序(magicsquare.exe),并指定“产品码”将许可证绑定到其中。使用AxProtector,您只需指定文件即可保护和许可应用程序,无需修改任何代码。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(3)

图3:选择项目类型

此时,magicsquare.exe是一个Windows应用程序,因此您选择“Windows应用程序或DLL”作为AxProtector项目类型。

作为源文件(原始/未受保护的文件),您选择magicsquare.exe,而对于目标文件(受保护/许可的文件),文件夹的结构如图4所示,文件的名称为magicsquareP.exe。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(4)

图4:指定原始文件的名称和许可文件的名称

在Licensing Systems选项卡中,设置公司码和产品码(参见图5)。

公司码:6000010(评估公司码)

产品码:14

公司码是威步分配给独立软件供应商的编号,以确保全球使用的所有许可证都是唯一的。ISV选择并分配给各个许可证的产品代码,每个许可证都有一组特定的产品或功能。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(5)

图5:设置公司码和产品码以将应用程序绑定许可证

在安全选项卡中,取消勾选“动态代码修改”(参见图6)。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(6)

图6:安全选项屏幕

该设置向授权应用程序添加动态安全检查,该功能与MATLAB编译器不兼容,需要关闭。

如果您尝试启动许可应用程序(magicsquareP.exe),您将收到一条错误消息,警告您找不到许可证,如图7所示。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(7)

图7:许可证错误显示

接下来,为这个独立应用程序创建一个具有访问权限的许可证,并将其保存在USB加密锁上(参见图8)。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(8)

图8:在CodeMeter许可证编辑器中将许可证信息写入硬件加密锁

产品码应与使用AxProtector加密独立应用程序(magicsquare.exe)时设置的产品码“14”相同。该应用程序已成功启动,您可以创建矩阵大小为5和7的魔方。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(9)

图9:应用许可后的Magic Square应用程序执行屏幕

尽管本示例使用硬件加密锁作为许可容器,这里同样还支持CodeMeter软授权或云授权。

CodeMeter应用于Simulink应用程序示例

Simulink编译器中提供了弹簧、质量和阻尼器模拟应用程序作为示例。

此时,CodeMeter许可证的应用方式与MATLAB编译器相同。

总结

使用MATLAB编译器或Simulink编译器创建的独立应用程序可以很容易地分发,但很难控制其预期的使用范围。使用CodeMeter,您可以通过简单的步骤应用许可,不仅可以防止泄漏或未经授权的拷贝,还可以使用最佳许可模型构建软件业务,以适应业务模型。例如可以在目标电脑中限制使用的产品数量、授权时间、不同的功能或不同的版本。互联网时代,越来越多的软件中包含了需要控制的先进算法和知识产权,即图像识别、机器学习、传感、AI、物理模拟等。CodeMeter可帮助您保护应用程序并实现软件货币化。

matlab仿真的主要任务(CodeMeter保护和授权Matlab应用程序)(10)

图10: Simulink编译器示例弹簧、质量和阻尼器模拟应用程序

与 CodeMeter API的集成

除了加密应用程序的代码外,CodeMeter API还可以集成到MATLAB代码中。

CodeMeter API是用于以下操作的许可和加密接口:

如需集成CodeMeter API,则必须在MATLAB中链接CodeMeter.dll,如使用以下命令行:

lcc-implib -u %WINDIR%\System32\WibuCm32.dll.

,