Revit二次开发 插件加密、打包、发布、授权全套教程

news2024/9/30 7:16:27

目录

代码加密及授权

添加授权工具引用

添加授权验证代码段

使用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 网站完成注册并登录后,在【我的】菜单下先完成申请成为开发者,并联系网站管理员获取 开发者权限,在网站中发布软件并通过审核后,用户可通过该授权平台购买产品,开发者可获取收益,该收益可在【我的】-【我的收益】中查看。

发布产品界面如下:

点击【提交审核】,在审核完成后,该产品既可在【产品中心】页面发布!

相关文件的获取地址

百度网盘:链接:百度网盘 请输入提取码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/803997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实锤研究,ChatGPT能力掉线!

早在一个多月前,ChatGPT性能下降的传闻便开始在网上流行,不少订阅了Plus版的用户纷纷表示,感觉ChatGPT在经历了几轮更新后开始降智,甚至有时反应速度也会出现问题。而如今,这一传闻终于得到了证实。 就在本周&#xf…

如何学好Java并调整学习过程中的心态:学习之路的秘诀

文章目录 第一步:建立坚实的基础实例分析:选择合适的学习路径 第二步:选择合适的学习资源实例分析:参与编程社区 第三步:动手实践实例分析:开发个人项目 调整学习过程中的心态1. 不怕失败2. 持续学习3. 寻求…

ORA-38760: This database instance failed to turn on flashback database

早晨接一个任务,使用rman备份在虚拟化单机上恢复实例,恢复参数文件、控制文件和数据文件都正常,recover归档时报错如下: Starting recover at 2023-07-28 10:25:01 using channel ORA_DISK_1 starting media recovery media reco…

实时云渲染技术:VR虚拟现实应用的关键节点

近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题。相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019年的282.8亿元增长…

攻防世界-Reverse-simple-unpack

题目描述:菜鸡拿到了一个被加壳的二进制文件 1. 思路分析 提示很清楚了,加壳的二进制文件,正好对这一块知识点是残缺的,先了解下加壳到底是什么 通过这段描述,其实加壳的目的是使得逆向起来更难了,因此这里…

基于SSM实现个人随笔分享平台:创作心灵,分享自我

项目简介 本文将对项目的功能及部分细节的实现进行介绍。个人随笔分享平台基于 SpringBoot SpringMVC MyBatis 实现。实现了用户的注册与登录、随笔主页、文章查询、个人随笔展示、个人随笔查询、写随笔、草稿箱、随笔修改、随笔删除、访问量及阅读量统计等功能。该项目登录模…

十六章:可靠性确实重要:一种端到端的弱监督语义分割方法

0.摘要 弱监督语义分割是一项具有挑战性的任务,因为它只利用图像级别的信息作为训练的监督,但在测试时需要产生像素级别的预测。为了应对这样一个具有挑战性的任务,最近最先进的方法提出了采用两步解决方案,即:1&#…

自动上传git

自动上传git 执行脚本 保存为.bat文件 echo off title bat 交互执行git命令 D: cd D:/git/test git add . git commit -m %date:~0,4%年%date:~5,2%月%date:~8,2%日 git push教程如下 1、搜索任务计划程序(最好管理员身份运行,普通用户可能无权限&am…

下载JMeter的历史版本——个人推荐5.2.1版本

官网地址:https://archive.apache.org/dist/jmeter/binaries/

【Git|项目管理】Git的常用命令以及使用场景

文章目录 1.前言2.工作区,暂存区,版本库简介3.Git的常用命令4.版本回退5.撤销修改6.删除文件7.总结 1.前言 在学习Git命令之前,需要先了解工作区,暂存区和版本库这三个概念 2.工作区,暂存区,版本库简介 在使用Git进行版本控制时,有三个重要的概念:工作…

机器学习——异常检测

异常点检测(Outlier detection),⼜称为离群点检测,是找出与预期对象的⾏为差异较⼤的对象的⼀个检测过程。这些被检测出的对象被称为异常点或者离群点。异常点(outlier)是⼀个数据对象,它明显不同于其他的数据对象。异…

invalid use of incomplete type class ui(new Ui::MainWindow)报错,解决方案

invalid use of incomplete type class ui(new Ui::MainWindow报错,解决方案 原因解决方案 原因 就是在我改控件button的名字的时候,没有选中控件,导致吧mainwindow的名字改了。。。 解决方案 吧mainwindow的名字改回来 MainWindow 完美解…

【LeetCode】101.对称二叉树

题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示: 树中节点数…

java项目之社区疫情防控管理信息系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的社区疫情防控管理信息系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Ja…

小米新专利曝光:解决升降摄像头痛点,隐藏式摄像头指日可待

根据国家知识产权局官方网站的最新消息,小米移动软件公司的“摄像头隐藏式电子设备及隐藏式摄像头”的专利申请在今天获得了授权。 这款电子设备的主要组成部分包括壳体、摄像模组和可伸缩的反射组件。壳体上设有一个开口,可以让反射组件向外伸出。反射组…

数据可视化大屏拼接屏开发实录:屏幕分辨率测试工具

一、可视化大屏开发 在数据可视化大屏开发时,确定数据可视化大屏拼接屏的板块尺寸需要考虑以下几个因素: 屏幕分辨率:首先需要知道每个板块屏幕的分辨率,包括宽度和高度,这决定了每个板块上可以显示的像素数量。 数据…

Qt : day4

1.思维导图 2.服务器 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this);}Widget::~Widget() {delete ui;…

Pytorch(一)

目录 一、基本操作 二、自动求导机制 三、线性回归DEMO 3.1模型的读取与保存 3.2利用GPU训练时 四、常见的Tensor形式 五、Hub模块 一、基本操作 操作代码如下: import torch import numpy as np#创建一个矩阵 x1 torch.empty(5,3)# 随机值 x2 torch.rand(5,3)# 初始化…

grid网格布局看这一篇就够了(接近3w字的总结)

在当今现代Web设计中,如何实现有效的布局一直是一个关键问题。这就是为什么CSS3推出了“grid网格布局”作为一种新的布局方式。使用grid,您可以轻松地设置复杂的网格布局,而无需使用冗长的CSS代码或框架。本文将探讨grid的概念、语法和实际应…

青大数据结构【2021】

一、单选(17!) 根据中序遍历得到降序序列可以知道,每个结点的左子树的结点的值比该结点的值小,因为没有重复的关键字,所以拥有最大值的结点没有左子树。 二、简答 三、分析计算 四、算法分析 3.迪杰斯特拉…