目录
代码加密及授权
添加授权工具引用
添加授权验证代码段
使用VMProtect进行代码保护
代码加密标记
代码加密
发布产品
软件打包
软件发布
相关文件的获取地址
本教程基于mxbim.com所提供的服务。
Revit二次开发 插件加密、打包、发布、授权全套教程
本网站(www.mxbim.com)为开发者提供的功能主要有:有偿的软件售卖服务,软件授权服务,软件推广服务,软件信息发布服务,软件使用量统计服务。使用流程为:软件开发完成->代码加密及授权->在网站上发布产品->获取收益。
代码加密及授权
添加授权工具引用
在本文附件中找到MXBIM.Author.dll,VMProtect.SDK.dll,并添加这些dll为项目引用,注意,在开发时添加应用为 未加密 文件夹下16k的MXBIM.Author.dll文件。
添加授权验证代码段
#region 授权验证
#if !DEBUG
string guid = Properties.Resources.Softguid;//Guid可由任意软件生成。为该软件的唯一标识,务必牢记
string hwid = VMProtect.SDK.GetCurrentHWID();//软件必须使用Vmprotect进行加密,否则此函数无法正常执行
if (MXBIM.Author.Verification.Verify(guid, "tt", hwid))
{
string sn = MXBIM.Author.RegistryOperate.GetKeyValue(guid, MXBIM.Author.RegistryOperate.OperateKeys.SN);
VMProtect.SerialState sd = VMProtect.SDK.SetSerialNumber(sn);
if (sd != VMProtect.SerialState.Success)
{
System.Windows.Forms.MessageBox.Show("获取授权失败,请联系开发商!");
return Result.Succeeded;
}
}
else
{
return Result.Succeeded;
}
#endif
#endregion
授权信息对话框代码
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
internal class author : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
LicenseForm licF = new MXBIM.Author.LicenseForm(Properties.Resources.Softguid);
licF.SetSerialNumber += VMProtect.SDK.SetSerialNumber;
licF.Show();
return Result.Succeeded;
}
}
使用VMProtect进行代码保护
代码加密标记
添加授权验证代码完成后,需要VMProtect相关的属性标签对相关方法进行标记。
注意务必在Release模式下编译。
代码标记有:
[VMProtect.BeginUltra]标记是VMProtect中用来开启“超级保护模式”的标记,通常在需要对非常重要的代码进行密集保护的情况下使用。在超级保护模式下,VMProtect会对代码执行流程进行彻底混淆和加密,使得代码难以被理解和破解。超级保护模式的加密性能会相对较低,因为它对代码进行了大量的混淆和加密,但是由于其极高的安全性,对于需要极高安全性保护的程序代码来说,使用超级保护模式是非常有效的。
[VMProtect.BeginMutation]标记是用来开启VMProtect的代码变异功能的,它能够对代码进行多维度的变异和混淆。通过变异,VMProtect能够使代码的执行流程变得更加难以理解,从而有效地增强程序代码的保护性能。而且,由于VMProtect的变异算法是动态的,每次变异的结果都不同,这也使得攻击者难以对程序进行攻击和破解。
[VMProtect.BeginVirtualization]标记是VMProtect采用的一种虚拟化技术。在虚拟化技术下,VMProtect会对C#代码进行转换,将其转为VMProtect的虚拟机指令,然后执行加密后的指令。通过这种方式,VMProtect能够达到非常高的安全性,即使攻击者拿到加密后的代码,在不获得VMProtect的运行环境的情况下,也难以理解和破解代码的执行逻辑。虚拟化是VMProtect中比较常用的一种技术,在对重要代码进行保护时,可以使用[VMProtect.BeginVirtualization]来开启虚拟化模式。
简单来说,[VMProtect.BeginUltra]是开启超级保护模式,[VMProtect.BeginMutation]是开启代码变异功能,[VMProtect.BeginVirtualization]是开启虚拟化功能。使用这些标记可以在不同的情况下对C#程序的代码进行保护,提高程序的安全性。
代码加密
使用VMProtect软件对软件进行加密,使用VMProtect打开前述编译完成的dll文件,进行如下设置:
对于第一次加密该软件,在授权下点击【通用】【添加授权】;
得到上述界面后,加密设置即完成,需要执行【文件】菜单下【保存授权为】命令,并且保存该文件,软件更新时在加密需要使用此文件。
执行【项目】【导出密钥对】命令,选择导出格式为“用于KeyGen.Net/Pro Global的参数”选项,复制该参数并保存至合适位置,在发布产品时需要该参数!
对于更新插件时,在授权下点击【通用】【使用其他项目文件】,在弹出的对话框中选择第一次加密插件是导出的授权文件的位置,其余同;
发布产品
软件打包
解压Advanced.rar文件,注意路径名称中不要含有中文,点击:AdvancedInstallerPortable.exe,
点击添加文件夹后选择需要打包的文件夹所在的位置,确保安装包文件夹中已经包含了 Revit插件必须添加文件 中包含的三个文件,
注意:开发添加引用的文件【MXBIM.Author.dll】需要使用【需要添加引用的库】目录下的【MXBIM.Author.dll】进行替换
并且installParameter.json文件按照如下要求进行了修改:
添加卸载时自定义操作
软件发布
在www.mxbim.com 网站完成注册并登录后,在【我的】菜单下先完成申请成为开发者,并联系网站管理员获取 开发者权限,在网站中发布软件并通过审核后,用户可通过该授权平台购买产品,开发者可获取收益,该收益可在【我的】-【我的收益】中查看。
发布产品界面如下:
点击【提交审核】,在审核完成后,该产品既可在【产品中心】页面发布!
相关文件的获取地址
百度网盘:链接:百度网盘 请输入提取码