|  | 
 
| 
软件界面
×
注册登录后全站资源免费查看下载您需要 登录 才可以下载或查看,没有账号?立即注册  
  
 验证状态:
 
 源码复制代码enum VMPState
{
                Success,          // 验证成功
                RunningTimeOver,  // 单次运行时间限制
                DateExpired,      // 运行时间到期
                MaxBuildExpired,  // 创建时间到期
                BadHwid,          // 机器码不匹配
}
 程序需要在VMP软件里导出密钥对:菜单->项目->导出密钥对->导出格式(.Net/PayPro Global的参数),并将其复制到目录SecretKey.txt里,如果目录里,没有SecretKey.txt文件,运行一次本程序即可自动生成一个。复制代码using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using VMProtect.KeyGen;
namespace VMP_KeyGenNet
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        Generator generator;
        string path = AppDomain.CurrentDomain.BaseDirectory + "SecretKey.txt";  // 保存密钥数据
        Dictionary<Control, Control> dicRegData = new Dictionary<Control, Control>();
        //默认生成一个密钥数据
        string initData = @"PHZtcC1sbS1wcm9kdWN0IGFsZ29yaXRobT0iUlNBIiBiaXRzPSIyMDQ4IiBleHA9InBDdjJ1Z2xm
eWNqTXd1MmozTHhxQ0VOeGVzNzZjMjVQNVcvNC9JUmlxN251ZU9BMk9sbWlVMWlFR0FWYTNaTnRz
K1JkRU5HTHVJSkVYa2czdzBxNWpNSi93TDhpRFhDV3VZMVhmUkxiWmFPUXZXZWZIYWl3SEtMdHNH
YWVRNDU3K1RjdncxanJQQVl6b0l1SjY1Y2JXUXl0RUhiLzJtOVk0MXB6cmJYRU9Idk5mN2RwK3I0
aGQxUWEyMFZQWGpBODQ4ekxCSlVxMW1Ld3RxenVOOHpwTk9OUGNEcTZLRWE0anZTY2VQR3VrUUFr
ZU95UHJiY203VVZhd0lEOHYyVmRWWENsMEdTM1JGZGYzWi80RnpDNDQ3cThJTFEzZi9kajhXaXl1
OXdXS1JrVjh1SUpVZnovYnM2RnFKK3RVWWpMR29wSitvV0FiR1g3eFdMTmlQWE5FUT09IiBtb2Q9
IjBkMUN1S3pjQ3lYc0lBSnVRL045am4rRTlHWFBvdU14NUhuVWoyVjdMVTJITEt5USt2SXVoZXFW
N0c3b09lb2dIU3Z0SzhGRUdZNVYyVVk4cURCbVlhYUtsNWZWRkhJd2JTZkZ1cjVqdGNYOUt5b2JU
MlRCU2pkMVBhMzdkUGZvakxWNzNqK01heENpMjRFWjBrUVFkWHZ0RFFYa3phU1QraHJDZG1qelJL
ZndxeG9qYzJtSkNkYldFUHNFQkhKaHoxM0cwYndrUnFLSGRYUjVTanhzWkRxb3ZXSVFubWwzOUtU
TE00VHA1bzRUSHRVMkNZWm1sbThGS1ZCWE8vZTFRb2VTbHl0YndRcFBNZzVvYy9aV1NOZWt4Mm5K
a1VzMkdxN3dFWTBYeE5kSkllWmpESmhSQkdHbk1OWnZldllkdXdjTk9aWUNPN3BnT3AyUFdhMnNL
UT09IiBwcm9kdWN0PSJQUUo0ZVR2VDN2Yz0iLz4=";
        private void MainForm_Load(object sender, EventArgs e)
        {
            //本机硬件ID
            textBoxHWID.Text = VMProtect.SDK.GetCurrentHWID();
            //判断SecretKey.txt文件是否存在,不存在就写一个默认值
            if (!File.Exists(path)) File.WriteAllText(path, initData);
            else initData = File.ReadAllText(path);
            generator = new Generator(initData);
            dicRegData.Add(checkBoxUserName,textBoxUserName);
            dicRegData.Add(checkBoxEMail,textBoxEMail);
            dicRegData.Add(checkBoxHardwareID,textBoxHardwareID);
            dicRegData.Add(checkBox4ExpirationDate,dateTimePickerExpirationDate);
            dicRegData.Add(checkBoxRunningTimeLimit,textBoxRunningTimeLimit);
            dicRegData.Add(checkBoxMaxBuildDate,dateTimePickerMaxBuildDate);
            dicRegData.Add(checkBoxUserData,textBoxUserData);
            //控件初状态为关闭
            foreach (var value in dicRegData.Values)
            {
                value.Enabled = false;
            }
        }
        private void checkBox_CheckedChanged(object sender, EventArgs e)
        {
            //CheckBox勾选后,后面的控件打开
            foreach (var key in dicRegData.Keys)
            {
               if(((CheckBox)key).Checked) dicRegData[key].Enabled = true;
               else dicRegData[key].Enabled = false;
            }
        }
        /// <summary>
        /// 生成注册码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            textBoxRegCode.Text = string.Empty;
            generator.UserName = textBoxUserName.Text;
            generator.EMail = textBoxEMail.Text;
            generator.HardwareID = textBoxHardwareID.Text;
            generator.ExpirationDate = dateTimePickerExpirationDate.Value;
            if (!string.IsNullOrEmpty(textBoxRunningTimeLimit.Text))
                generator.RunningTimeLimit = Convert.ToInt32(textBoxRunningTimeLimit.Text);
            generator.MaxBuildDate = dateTimePickerMaxBuildDate.Value;
            if (!string.IsNullOrEmpty(textBoxUserData.Text))
                generator.UserData = Encoding.Default.GetBytes(textBoxUserData.Text);
            textBoxRegCode.Text = generator.Generate();
        }
        /// <summary>
        /// 复制注册码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonCopy_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxRegCode.Text)) return;
            Clipboard.SetDataObject(textBoxRegCode.Text);
        }
        /// <summary>
        /// 保存注册码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonSave_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxRegCode.Text)) return;
            SaveFileDialog saveDialog = new SaveFileDialog();
            saveDialog.Title = "保存注册码";
            saveDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
            saveDialog.Filter = "文本文件| *.txt";
            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllText(saveDialog.FileName, textBoxRegCode.Text);
                MessageBox.Show(Path.GetFileName(saveDialog.FileName) + "保存成功", "提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// 验证注册码,这里的功能必须使用VMP将注册机也要加壳才有用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonVerify_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxRegCode.Text)) return;
            VMProtect.SDK.SetSerialNumber(textBoxRegCode.Text);
            VMProtect.SDK.GetSerialNumberState();
            VMProtect.SerialNumberData sd;
            var res = VMProtect.SDK.GetSerialNumberData(out sd);
            if (res)
            {
                MessageBox.Show("状态 : " + sd.State + Environment.NewLine +
                    "用户名 : " + sd.UserName + Environment.NewLine +
                    "邮箱 : " + sd.EMail + Environment.NewLine +
                    "到期日期 : " + sd.Expires + Environment.NewLine +
                    "最大创建时间 : " + sd.MaxBuild + Environment.NewLine +
                    "运行时间限制 : " + sd.RunningTime + Environment.NewLine +
                    "用户数据 : " + Encoding.Default.GetString(sd.UserData) + Environment.NewLine , "提示", MessageBoxButtons.OK);
            }
        }
    }
}
  
 https://pan.quark.cn/s/b9fc63e7ecda
 
 原作者wtujoxk
 
 
 | 
 |