目录

第一步,获取电脑唯一性标志

第二步,编密文

第三步,封装Dll

第四步,编客户端和注册机

注册

C盘序列号

电脑名

第五步,应用程序引用



第一步,获取电脑标志

每一台电脑的标志有哪些?

1、硬盘序列号

2、电脑名

3、IP地址

想到的就这些了,本案列以C盘序列号和电脑名为电脑的识别依据,以阐述加密算法

获取C盘序列号代码:

    Dim DriveID
    Set DriveID = CreateObject("Scripting.FileSystemObject")
    mySerial = DriveID.GetDrive("C").SerialNumber

获取电脑名代码:

    dim PcName as string  '电脑名
    Set a = CreateObject("Wscript.Network")
    PcName =  a.ComputerName   

OK,如果要给另一台电脑使用权限,限定识别时间,使用期限,加上试用次数
    差不多了。比如:

信息大概这样写:2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9

解释下:日期(后续程序可以自定义保留5天)_试用次数_未注册或者注册信息错误但格式正确,提取该数字每次打开“-1”,      _C盘序列号_电脑名_到期日期(可设定为固定字段,然后封装到程序内,即便含义依然很难破解算法【dll封】)

第二步,编密文

第一步的注册信息基本完备,如上图,如果就这样给用户使用程序,注册码随便编一个也可,辛苦敲定的程序就成了做贡献了,别吃饭了,但是我们如何让用户看不懂注册码呢——加密算法。看看别个的算法介绍:

https://blog.csdn.net/ddffr/article/details/77153127

看了算法原理介绍以后(其实想多了),个人这几个渣渣小程序还没那么大的影响力,稍微秀一下小算法,简单点你破解依然很困难,除非你知道我的dll里面写的什么。来吧,我也来介绍下我的算法思路,算法相同,随便改改参数你都很难破解,而且为了这点成本花这么大力气破解这么简单的算法是没有必要的,我想。

2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9,将每一个字符转化为2个字符

假定字符x,char(97)=a  ,  ASC(a)=97  , 则ASC(x)=yy 或则 ASC(x)=zzz

大家知道,ascii码集中在33-126间,那么我减去某个数或则加上某个数那么这群数字就全是yy,或者zzz了

我在逆向算法时按字段长度取出来就是了,正向算法时不足加上某个特定字符就可以了

以下就是编译之后的注册码了,大哥们,谁有兴趣为小程序破译这个算法

1、注册有时限

2、试用有次数限制

3、指定使用阶段,本参数在dll里面,怎么破

4、限定使用时间

5、针对你的C盘序列号和电脑名仅此一份

本程序针对封闭式工程研发小程序,基本不予外网连接,困难点就是输入注册码较多,比较麻烦,但是实现原理简单

不想麻烦那就用参考链接里面的大数因式分解吧,以后研究,我还没考虑好该如何将这几个信息变成大数呢,各位欢迎评论

第三步,封装Dll

继承第二部,我们需要将理论的算法付诸实践

在该类模块插入以下代码,Change1是类Certif20的一个方法(正向编译成数字),其余程序就可以引用了——封装为dll。

Public Function Change1(ByVal Str1 As String) As String
    Dim Str_B As String
    For i = 1 To Len(Str1)
        tt = Mid(Str1, i, 1)
        Str_B = Str_B & (Asc(tt) - 30)
    Next
    Change1 = Str_B
End Function

逆向编译段

Public Function Change2(ByVal Str1 As String) As String
    Dim State01 As Boolean
    State01 = False
    For i = 1 To Len(Str1) / 2
        tt = Mid(Str1, i * 2 - 1, 2)
        Str_C = Str_C & Chr(CInt(tt) + 30)
    Next
    Change2 = Str_C
End Function

以上代码是两位的,如果要弄成3位的也可,参数做一下修改

最后生成dll即可。

第四步,编客户端和注册机

图一图二分别是客户端和注册机界面,原理大家一看便知,便不多说了,直接上代码

注册

Private Sub Command1_Click()
    Rem 获取C盘序列号
    Dim C_str, CName, Str1 As String
    Dim DriveID
    Set DriveID = CreateObject("Scripting.FileSystemObject")
    C_str = DriveID.GetDrive("C").SerialNumber
    Set a = CreateObject("Wscript.Network")
    CName = a.ComputerName
    
    Dim Cer1 As
Certif20
    Set Cer1 = New Certif20
    Str1 = Cer1.Change2(Text3.Text)
    Dim Arr1
    Arr1 = Split(Str1, "CQVB")
    If UBound(Arr1) <> 2 Then
        MsgBox "注册信息有误" & Chr(10) & "联系邮箱:510265404@qq.com", , "注册失败"
        Exit Sub
    End If
    If Arr1(1) <> CStr(C_str) Then
        MsgBox "序列号不匹配" & Chr(10) & "联系邮箱:510265404@qq.com", , "注册失败"
    ElseIf InStr(Arr1(2), CName) <> 1 Then
        MsgBox "电脑名不匹配" & Chr(10) & "联系邮箱:510265404@qq.com", , "注册失败"
    Else
        Dim date2 As Date
        date2 = right(Arr1(2), Len(Arr1(2)) - Len(CName))
        MsgBox "恭喜恭喜!" & Chr(10) & "有效期至: " & date2, , "注册成功"
        Rem 创建记录        *******************************************************
        Rem 判断有无缓存记录(txt),无则创建一个空值
        Dim fso As Object, blnExist As Boolean
        Set fso = CreateObject("Scripting.FileSystemObject")
        blnExist = fso.FileExists("D:\MSFus_1.0\Setting\Certif\licence.txt")
        If blnExist = False Then
        Dim sFile As Object
        Set sFile = fso.CreateTextFile("D:\MSFus_1.0\Setting\Certif\licence.txt", True)
        End If
        Rem 读取TXT
        Const ForWriting = 2
        Set sFile = fso.OpenTextFile("D:\MSFus_1.0\Setting\Certif\licence.txt", 2, TristateFalse)
        sFile.Write Text3.Text
        sFile.Close
        Set fso = Nothing
        Set sFile = Nothing
    End If
End Sub

C盘序列号

Private Sub Command2_Click()
    Rem 获取C盘序列号
    Dim DriveID
    Set DriveID = CreateObject("Scripting.FileSystemObject")
    Text1.Text = DriveID.GetDrive("C").SerialNumber
End Sub

电脑名

Private Sub Command3_Click()
    Set a = CreateObject("Wscript.Network")
    Text2.Text = a.ComputerName
End Sub

第五步,应用程序引用

按上面描述的,实现以下几个功能

1、注册有时限

2、试用有次数限制

3、指定使用阶段,本参数在dll里面

4、限定使用时间

5、针对你的C盘序列号和电脑名仅此一份

列:2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9

1、逆向解析为上面信息串(使用dll的Change2)

2、获取生成序列号的日期,与当前日期比较10天内可以注册,其余时间不予注册

3、解析与本机不符的,但格式正确,将试用次数(-1),直至次数小于1程序提示不能使用,请注册

4、注册成功的,试用次数直接至零,判断使用末期与注册日期是否符合指定阶段,不是不给运行

5、判断当前日期是否比使用末期小,否则不予运行

OK了,代码后续跟上……感谢各位支持。

参考资源:

https://blog.csdn.net/ddffr/article/details/77153127

https://baike.baidu.com/item/DES/210508?fr=aladdin

自定义VB程序加密方案相关推荐

  1. 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂

    网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...

  2. 优秀的加密方案-软件加密技巧

    概要 ◎设计优秀的加密方案 ◎简单而有效的加密技巧 ◎进一步提高加密强度 ◎通过"软硬兼施",降低加密成本 ◎通过软件授权,实现多种销售模式 我们需要防御什么 驱动程序替换 这种攻 ...

  3. Unity - 游戏加密方案-DLL加密方法记录

    Unity - 游戏加密方案-DLL加密方法记录 DLL加密 Unity中的自定义脚本都会打包到Assembly-CSharp.dll这个DLL中,所以目前常见的游戏加密方案就是,用对称加密算法加密A ...

  4. 一种混合加密方案在软件授权中的应用

    拥有知识产权的软件一般采取软件保护手段,需要使用某种方式激活软件才可以使用.软件激活本质是对密文数据进行比较,而密文数据是由软件开发商根据目标机器的特征数据进行加密产生的.激活过程是在认证服务器或者目 ...

  5. .net 程序加密方法

    .net 程序加密,一般是对生成的exe文件或者dll直接进行加壳,配合加密锁或者许可进行授权控制,既能保证安全性,又控制软件的使用. 加壳工具的选择 一般要考虑几点,第一是加壳的安全性,不能被轻易脱 ...

  6. STM32 应用程序加密的一种设计方案

    0.前言 STM32编译后的代码存在FLASH中,通过外部工具可以读出来全部数据,一旦硬件抄板一样,再将FLASH数据全部拷贝至抄板单片机中,既可以完全实现硬件和软件功能抄袭.因此,需要对自己的应用程 ...

  7. 开放接口加密方案_27种开放式解决方案,适用于所有教育

    开放接口加密方案 开放(从开源软件到开放硬件,再到开放原则)正在改变教育的范式. 因此,为庆祝今年的一切,我收集了2017年在Opensource.com上发表的有关该主题的27篇最佳文章. 我将它们 ...

  8. 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程

    <<VB程序设计基础>第4章 函数与过程>由会员分享,可在线阅读,更多相关<<VB程序设计基础>第4章 函数与过程(16页珍藏版)>请在人人文库网上搜索 ...

  9. 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...

    登录涉及的面比较多:触发场景上,各种页面各种交互路径都可能触发登录:交互过程上,既需要用户提供/证明id,也需要后端记录维护,还需要保证安全性:复用场景上,既是通用功能,需要多场景多页面甚至多小程序复 ...

  10. h5应用数据加密_在线视频加密用H5加密方案有哪些优点?

    在线视频加密在以前使用比较多的是Flash方案,它可以实现用户不安装任何插件直接播放加密视频,对用户来说体验好,对网校来说还能起到防止视频传播的作用.但近期CHROME宣布2020年底不再支持flas ...

最新文章

  1. 浏览器是怎样工作的(一):基础知识
  2. cart2pol函数
  3. poj2823 线段树模板题 点修改(也可以用单调队列)
  4. 编译opencv4.2时出现undefined reference to `jpeg_default_qtables‘错误的解决方案
  5. Go 语言学习笔记(二):函数
  6. 建立副本名称冲突_包的建立(一)
  7. coredump_filter的设置
  8. 图的广度优先搜索遍历
  9. ★LeetCode(108)——将有序数组转换为二叉搜索树(JavaScript)
  10. python刚出来多少薪资-2019 年Python工程师的平均薪资是多少?
  11. Chrome 新功能:因更新或崩溃而重启后,PWA应用将自动恢复运行!
  12. 可以检测手机帧率和温度的软件_腾讯黑鲨游戏手机3评测:深度定制带来的全新游戏体验...
  13. Mujoco-二阶单摆建模与控制
  14. 柔性整列压力传感器工作原理记录
  15. 高中数学竞赛与自主招生内部练习试题
  16. 04-深入浅出索引(上)
  17. 超便捷好用的-圆形花瓣加载滚动图片插件spin.js
  18. 什么都可以丢,唯独不能丢了你
  19. R Shiny App文件默认加载顺序
  20. 分享网页文章到微信时如何自定义缩略图、链接、标题和摘要

热门文章

  1. 【开发工具】Blender制作简单动画
  2. java/php/net/python房产信息管理系统设计
  3. java junit测试类怎么写_15.junit测试类使用及注解
  4. 软件开发测试验收通知书,软件验收报告(共7篇).doc
  5. C语言 通讯录管理系统(链表,手机号码分段存储,txt文件存取)
  6. 组装电脑配件选择教程
  7. Vmware中安装win7虚拟机以及相关简单知识
  8. 也谈USB重定向的方式
  9. 项目实战:Qt+OpenCV激光射击游戏(识别激光、识别圆)
  10. MicroSIP软电话的安装和使用--从电脑上接听和拨打电话