软件MD5自效验无需任何外部文件

易语言 2020-07-23 19:58:08

软件MD5自效验无需任何外部文件

有时候注释多的超过了命令都好几行

这个自效验只写了MD5 CRC的自己修改吧。 注释很清楚,再不回就该敲脑袋啦

希望各位易友不要拿来就用,那样我写注释也就成了多此一举了。学习思路才是王道。

其实这个思路是很简单的,你理解了之后还可以自己再加写其他更好的功能!

.如果真 (是否为调试版 ()) ' 无用,判断是不是在调试状态,提示你需要编译才可以
信息框 (“调试状态下测试绝对出错,必须编译测试”, 0, , )
.如果真结束
自身程序 = 读入文件 (取运行目录 () + “\” + 取执行文件名 ()) ' 把自身读入进来
位置 = 寻找字节集 (自身程序, #加密源, ) ' 查找一下咱们的加密字节集的位置,留做使用
调试输出 (位置) ' 这个为-1 那就是因为你一定是在调试状态
' 真正的加密原=32个*号
' 我将他使用加密数据()命令加密后 结果是40字节的 所以 加密原是40字节
' 其目的是为了和这个常量1区分开 因为他俩要做对比的。但是切记 加密原虽然为40字节集 但是解密出来也要符合32字节 不然你怎么做MD5自效验
.判断开始 (到文本 (解密数据 (#加密源, “123”, 1)) = #常量1) ' 这里显而易见的就是判断解密出来的加密原 是不是等于常量1 如果不等于那就是已经修改完毕了 不需要执行下面的了
替换空白 = 字节集替换 (自身程序, 寻找字节集 (自身程序, #加密源, ), 取字节集长度 (#加密源), 取空白字节集 (取字节集长度 (#加密源))) ' 将自身程序(加密原)这一段字节集替换成空白字节集,这样的话就可以使用CRC效验文件。同样也是避免别人替换MD5,大家都知道 CRC哪怕你一个字母的大小写被改变他都会发生改变,然后你空白字节集 始终是空白字节集你变不成什么玩意,注意哈 你要效验的 值 的字节集长度是多少 你的加密文本的 字节集长度也要多少。不然你到时候替换可不方便
替换MD5 = 加密数据 (到字节集 (校验_取md5 (替换空白)), “123”, 1) ' 这里要注意的是 咱们要替换的字节集一定要是加密数据后的字节集 因为你现在的加密原就是加密后的字节集数据
' 需要注意的是 现在 替换空白 属于是一个咱们之前的自身程序 只不过被咱们把他之前的 加密原 的字节集替换成了空白字节集 不影响运行
' 替换MD5 的意思就是 把 (替换成空白) 效验出来他的MD5 这样比较干净 避免了MD5 被替换做带来的 损失
写到文件 (取运行目录 () + “\1.exe”, 字节集替换 (自身程序, 位置, 取字节集长度 (替换MD5), 替换MD5)) ' 这里我们再回归之前没有被修改的自身程序 将加密原替换成这个效验出来的干净的MD5,切记哈 替换MD5那里 已经把效验出来的MD5 做了加密处理 如果不做 直接写 那样的话就会出错
.默认
MD5 = 到文本 (取字节集中间 (自身程序, 位置, 取字节集长度 (#加密源))) ' 这里是不需要修改的时候 来这里执行 因为上面的操作 其实根本本质是把加密原的字节集替换成了MD5的值 咱们再次获取加密源 注意 我没有解密 加密加密 到这里都一样 看你想怎么去对比了
新MD5 = 到文本 (加密数据 (到字节集 (校验_取md5 (字节集替换 (读入文件 (取运行目录 () + “\” + 取执行文件名 ()), 寻找字节集 (读入文件 (取运行目录 () + “\” + 取执行文件名 ()), #加密源, ), 取字节集长度 (#加密源), 取空白字节集 (取字节集长度 (#加密源))))), “123”, 1))
' 首先呢 现在已经是一个新的程序了 也就是写出来的那个1.EXE程序‘ 这里主要就是 将自身读入 然后将加密原的字节集去除掉 效验一下 MD5 看是否与第一次执行的时候一样
' 注意哈 我这里已经到了文本 并且也加密了。这样就会和我上面那个旧的MD5 是一个格式的了。
.判断开始 (新MD5 ≠ MD5) ' 这里不解释
信息框 (“被修改”, 0, )