[e]
.版本 2
.支持库 dp1
.程序集 窗口程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 注册验证, , 公开
.参数 参_注册内容, 文本型
.参数 参_注册信息_返回, 文本型, 可空
.局部变量 wb, 文本型
.局部变量 临时文本, 文本型
.局部变量 wjh, 整数型
.局部变量 m, 整数型
.判断开始 (删全部空 (参_注册内容) = “”)
返回 ()
.默认
.判断结束
置入代码 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP过程加密开始
临时文本 = 到大写 (取数据摘要 (到字节集 (系统_取CPU序列号 ())))
临时文本 = 取文本中间 (临时文本, 27, 4) + “-” + 取文本中间 (临时文本, 22, 4) + “-” + 取文本中间 (临时文本, 15, 4) + “-” + 取文本中间 (临时文本, 4, 4)
m = 进制_十六到十 (取文本右边 (参_注册内容, 1))
.判断循环首 (m = 0)
启动线程 (&提示信息, 1, )
参_注册内容 = “”
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP过程加密结束
返回 ()
.判断循环尾 ()
wb = 取文本右边 (参_注册内容, m)
wb = 取文本左边 (wb, 取文本长度 (wb) - 1)
wjh = 进制_十六到十 (wb)
wjh = 右移 (wjh, 4)
.判断循环首 (到时间 (到文本 (wjh)) = [100年1月1日])
启动线程 (&提示信息, 1, )
参_注册内容 = “”
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP过程加密结束
返回 ()
.判断循环尾 ()
.判断循环首 (取时间间隔 (取现行时间 (), 到时间 (到文本 (wjh)), 5) > 0)
启动线程 (&提示信息, 1, )
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP过程加密结束
返回 ()
.判断循环尾 ()
wb = 取文本左边 (参_注册内容, 取文本长度 (参_注册内容) - m)
.判断循环首 (临时文本 ≠ “”)
.判断循环首 (到字节集 (wb) = 到字节集 (到大写 (取数据摘要 (到字节集 (临时文本 + 校验_取sha1 (到字节集 (临时文本)))))))
.如果 (取年份 (到时间 (到文本 (wjh))) = 2050)
参_注册信息_返回 = “销售小票打印助手 (到期日:永久使用)”
.否则
参_注册信息_返回 = “销售小票打印助手 (到期日:” + 到文本 (wjh) + “)”
.如果结束
wjh = 打开加密文件 (取运行目录 () + “\exp.dat”, 4, , “6628888”, )
写出文本 (wjh, 参_注册内容)
关闭文件 (wjh)
试用次数 = 到字节集 (“试用次数永久”)
写到文件 (取特定目录 (10) + “\scys.dll”, 加密数据 (试用次数, “6628888”, ))
载入 (窗口1, , 真) '载入这个窗口1不知道是什么所以无法帮你修改
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP过程加密结束
返回 ()
.判断循环尾 ()
跳出循环 ()
.判断循环尾 ()
启动线程 (&提示信息, 1, )
参_注册内容 = “”
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP过程加密结束
.子程序 进制_十六到十, 整数型, 公开, 将16进制文件转换到10进制数值(返回十进制数)
.参数 文本, 文本型
.局部变量 i, 整数型
.局部变量 t, 文本型
.局部变量 结果, 整数型
.局部变量 局_文本, 文本型
t = “0123456789ABCDEF”
局_文本 = 到大写 (文本)
.计次循环首 (取文本长度 (文本), i)
结果 = 结果 × 16 + 寻找文本 (t, 取文本中间 (局_文本, i, 1), , 假) - 1
.计次循环尾 ()
返回 (结果)
.子程序 校验_取sha1, 文本型, 公开, 返回40位的校验数据
.参数 字节集数据, 字节集, , 要取数据摘要的字节集
返回 (到小写 (MD过程 (字节集数据, 32772, 20)))
.子程序 MD过程, 文本型
.参数 x, 字节集
.参数 种类, 整数型
.参数 长度, 整数型
.局部变量 hCryptProv, 整数型
.局部变量 hKey, 整数型
.局部变量 hHash, 整数型
.局部变量 pbBuffer, 字节集
.局部变量 cbHash, 整数型
.局部变量 rgbHash, 字节集
.局部变量 rgbDigits, 字节集
.局部变量 局_MD5, 字节集
.局部变量 b, 整数型
.局部变量 i, 整数型
.局部变量 len, 整数型
.如果 (CryptAcquireContextA (hCryptProv, “”, “”, 1, -268435456) = 0)
.如果真 (CryptAcquireContextA (hCryptProv, “”, “”, 1, 0) = 0)
返回 (“”)
.如果真结束
.否则
.如果 (CryptCreateHash (hCryptProv, 种类, hKey, 0, hHash) = 0)
CryptReleaseContext (hCryptProv, 0)
返回 (“”)
.否则
pbBuffer = x
len = 取字节集长度 (x)
.如果 (CryptHashData (hHash, pbBuffer, len, 0) = 0)
CryptDestroyHash (hHash)
CryptReleaseContext (hCryptProv, 0)
返回 (“”)
.否则
rgbHash = 取空白字节集 (长度)
cbHash = 长度
.如果 (CryptGetHashParam (hHash, 2, rgbHash, cbHash, 0) = 0)
CryptDestroyHash (hHash)
CryptReleaseContext (hCryptProv, 0)
返回 (“”)
.否则
rgbDigits = 到字节集 (“0123456789ABCDEF”)
局_MD5 = 取空白字节集 (长度 × 2)
.变量循环首 (0, cbHash - 1, 1, i)
b = rgbHash [i + 1]
局_MD5 [i × 2 + 1] = rgbDigits [右移 (b, 4) + 1]
局_MD5 [i × 2 + 2] = rgbDigits [位与 (b, 15) + 1]
.变量循环尾 ()
CryptDestroyHash (hHash)
CryptReleaseContext (hCryptProv, 0)
.如果结束
.如果结束
.如果结束
.如果结束
返回 (到文本 (局_MD5))
[/e] |