发布网友 发布时间:2022-04-30 17:40
共3个回答
热心网友 时间:2022-06-28 14:09
可以的,这就是关系到软件的验证问题,验证方式通常有2种: 1:本地验证模式 通过提取用户电脑的特征码,然后加密一下,然后要求用户在购买时提供相关加密后的特征码! 然后在给用户软件时,重新把特征码写到程序中去,在程序运行时判断特征码是否相符! 当然,你需要自己写一个提取特征码并加密后输出的小工具给用户! 工具代码例: .版本 2 .支持库 dp1 .局部变量 i i = 取硬盘特征字 () .如果真 (i = 0) 编辑框1.内容 = “提取机器码失败” 返回 () .如果真结束 编辑框1.内容 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, )) 上面的代码采用硬盘的特征字来作为前提,然后再将内容加密,然后再将加密后的内容转为MD5,并显示到编辑框中,要求用户把编辑的内容发给你! 然后就是在软件中去效验一下了!较为安全的做法例子: .版本 2 .支持库 dp1 .子程序 __启动窗口_创建完毕 .局部变量 i .局部变量 用户提供的特征, 文本型 .局部变量 当前提取的特征, 文本型 用户提供的特征 = “在程序中应该将用户提供的特征再次MD5来避免破解者使用内存工具来破解验证部分” ' 用户提供的特征 =取数据摘要(到字节集 (用户提供的特征))'这是2次MD5的方式,但要另外做好,然后再在程序中直接赋值 ' 当然了,你可以多次MD5,更加安全一些 i = 取硬盘特征字 () .如果真 (i = 0) 信息框 (“验证失败!”, 0, ) ' 编辑框1.内容 = “提取机器码失败” 返回 () .如果真结束 ' 然后用同样的方法,将提取到的特征加密后,然后再根据你事先MD5的次数来处理 当前提取的特征 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, )) .如果真 (当前提取的特征 ≠ 用户提供的特征) 时钟1.时钟周期 = 5000 ' 不直接结束程序,而是使用一个5秒的时钟 .如果真结束 '正常处理代码 .子程序 _时钟1_周期事件 结束 () ' 这样的处理方式,能做一些小欺骗,避免被轻易破解! 以上是一些验证方面的代码以及一些商业软件应具备一些防破解的意识! 当然了,要想真正做到防破解并不容易,这里的代码只能起到一些很小的作用,对于大鸟来说,这是没用的!防破解的技术比较复杂这里就不再说这个问题先! 2:c/s验证模式 即客户端和服务器通讯方式进行验证,这里的做法就好比QQ登陆一样, 提供一个用户注册的界面,而且为应用程序制作一个服务器,E语言可以使用客户端和服务器控件 进行TCP通讯,服务器部分需要有数据库,把用户的注册数据记录在数据库中! 客户端部分在用户操作注册的同时,把用户电脑的特征字也一并发送到服务器, 客户端再提供一个用户登陆界面,这样,用户输入账号和密码进行登陆,客户端把登陆的信息和当前登陆的用户的电脑的特征字发给服务器,服务器进行用户信息的验证和处理,服务器部分就可以根据这些信息进行处理!服务器处理后,再将结果发送给客户端,就好比QQ登陆时,当你的密码输入错误,服务器会发送一个密码输入错误的信息给客户端,然后客户端收到这个数据包后,就弹出一个窗口提醒用户,密码不正确,登陆失败的提示!代码太多,这就不写出来了!大致上需要掌握就是E的服务器和客户端控件的应用! 当然了,一般服务器比分,如果自己架设不适合的话,就需要去租服务器! 但是成本较大,租网页形式的,就需要会学ASP.net 并且有服务器的情况下,还可以考虑制作自动更新,每次客户端登陆的时候都把当前客户端的版本发给服务器,服务器进行版本验证,检查是否有更新的版本,然后通知客户端有新版本是否立即更新! 这里涉及更多的技术知识,我就不一一陈述了!热心网友 时间:2022-06-28 14:09
你有虚拟服务器没有热心网友 时间:2022-06-28 14:10
= = 百度搜索易语言吧,里面多了去了,自己去看吧