开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7907|回复: 39
收起左侧

[易语言纯源码] 【原创】易程序实现效验自身MD5,纯核心库实现

[复制链接]

结帖率:100% (53/53)
发表于 2017-9-15 16:43:18 | 显示全部楼层 |阅读模式   福建省宁德市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 aqwvwv 于 2017-9-16 00:13 编辑

程序实现效验自身MD5,纯核心库实现

程序运行的时候如何效验自身是否有被非法篡改,效验的方法有很多种,今天给大家开源一种效验MD5的办法

第一步:

首先,我们得在发布的软件里面先写几段代码,获取自身软件的MD5值

将下面代码放在启动窗口创建完毕下,然后编译源码,源码编译出来后,我们尝试打开看下,是不是效验失败了?软件打不开

  
[/align]
[align=left].版本 2
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
如果真 (文件效验 ())
信息框 (“文件被非法修改,无法运行”, #错误图标, “错误”, )
结束 ()

子程序名返回值类型公开备 注
文件效验逻辑型 效验成功返回真,失败返回假,返回假表示改文件必然不是原始文件
变量名类 型静态数组备 注
局_运行目录文本型 
局_执行文件名文本型 
局_字节集字节集 
局_MD5文本型 
原始MD5文本型 
局_运行目录 = 取运行目录 ()
局_执行文件名 = 取执行文件名 ()
局_字节集 = 读入文件 (局_运行目录 + “\” + 局_执行文件名)
原始MD5 = 到文本 (取字节集右边 (局_字节集, 32))
局_字节集 = 取字节集左边 (局_字节集, 取字节集长度 (局_字节集) - 32)
局_MD5 = 取数据摘要 (局_字节集)
如果真 (局_MD5 = 原始MD5)
返回 ()
返回 ()
[/align]
[align=left]


i支持库列表   支持库注释   
dp1数据操作支持库一



上面的代码原理是,读入自身字节集,然后通过 取数据摘要()得到自身MD5值

这个MD5值的长度 它都是固定的32位,其中尾部32个字节数据,是我储存的软件MD5

这条数据得在软件编译出来后写出。


第二步:


要想打开上面编译的软件,并效验成功,我们需要打造一个专门给软件尾部写入MD5的工具,它的界面如下

QQ截图20170915154434.png


  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
MD5文本型  

子程序名返回值类型公开备 注
_拖放对象1_得到文件  
参数名类 型参考可空数组备 注
接收到的文件路径文本型
编辑框1.内容 = 接收到的文件路径
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
拖放对象1.注册拖放控件 (取窗口句柄 ())
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
字节集字节集 
文件号整数型 
如果真 (文件是否存在 (编辑框1.内容))
文件号 = 打开文件 (编辑框1.内容, , , , )
字节集 = 读入字节集 (文件号, 取文件长度 (文件号))
MD5 = 取数据摘要 (字节集)
移到文件尾 (文件号)
写出字节集 (文件号, 到字节集 (MD5))
关闭文件 (文件号)
编辑框2.内容 = “MD5:” + MD5
信息框 (“写出成功”, 0, , )

子程序名返回值类型公开备 注
_按钮2_被单击  
置剪辑板文本 ( #常量1 )
信息框 (“复制成功”, 0, , )
子程序名返回值类型公开备 注
文件效验逻辑型 效验成功返回真,失败返回假,返回假表示改文件必然不是原始文件
变量名类 型静态数组备 注
局_运行目录文本型 
局_执行文件名文本型 
局_字节集字节集 
局_MD5文本型 
原始MD5文本型 
局_运行目录 = 取运行目录 ()
局_执行文件名 = 取执行文件名 ()
局_字节集 = 读入文件 (局_运行目录 + “\” + 局_执行文件名)
原始MD5 = 到文本 (取字节集右边 (局_字节集, 32))
局_字节集 = 取字节集左边 (局_字节集, 取字节集长度 (局_字节集) - 32)
局_MD5 = 取数据摘要 (局_字节集)
如果真 (局_MD5 = 原始MD5)
返回 ()
返回 ()


i支持库列表   支持库注释   
edroptarget拖放支持库
dp1数据操作支持库一



我们将刚才编译好的软件,拖入文件效验工具中,点击按钮【开始写入】

提示,写入成功就可以了,这时候我们再打开之前编译的软件,看看这时候是否能正常效验成功,正常打开?


感觉是不是特别简单,也很方便?

这样我们就能通过该办法得知我们的程序是否有被篡改,给软件留下暗桩,保护劳动成果

建议MD5信息通过加密算法进行储存,储存的位置也可以自定义,当文件效验()失败的时候,软件不要去提示什么文件被非法篡改等信息,发现后直接执行关闭代码就可以了,或者故意来个数组错误,内存溢出等代码,应该很简单吧?

这样能很大程度上防止破J的朋友通过文明,关键提示信息等定位到暗桩在那里,如果要在多个位置调用,尽量不要重复的调用一个子程序,应该随机多创建多个独立子程序,分别调用


建议不要直接在启动窗口创建完毕下去判断

推荐在以下几个位置进行效验:

1.功能执行代码中

2.软件常用功能事件中

等这类位置进行判断,要不影响软件正常运行效率即可


注:本文方法心得仅供易友学习参考,重要软件请谨慎套用
源码中出现需要模块的,搜索下   大文件_打开文件()   将大文件_ 去掉就可以了

文件效验【源码】.zip (688.96 KB, 下载次数: 153)


点评

使用了模块却没有附带   美国  发表于 2017-9-15 23:45
E官方论坛搜索自校验,有一个早年作品写得很完善。   香港特别行政区湾仔区  发表于 2017-9-15 19:11

本帖被以下淘专辑推荐:

结帖率:100% (1/1)

签到天数: 23 天

发表于 6 天前 | 显示全部楼层   上海市上海市
感谢分享 赞一个 !
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2021-6-3 00:25:42 | 显示全部楼层   山东省滨州市
学习学习
回复 支持 反对

使用道具 举报

发表于 2017-12-30 21:51:48 | 显示全部楼层   海南省海口市
谢谢分享!!!
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 20 天

发表于 2017-12-2 14:50:14 | 显示全部楼层   广东省东莞市
学习了学习了学习了学习了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2017-10-4 11:48:52 高大上手机用户 | 显示全部楼层   山东省菏泽市
不错        
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
发表于 2017-9-23 10:12:52 | 显示全部楼层   四川省宜宾市
看看呢
回复 支持 反对

使用道具 举报

发表于 2017-9-21 00:22:03 | 显示全部楼层   河北省石家庄市
好像很厉害 看一眼
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:38% (6/16)
发表于 2017-9-18 17:52:29 | 显示全部楼层   广东省江门市
很有意思,收藏了
回复 支持 反对

使用道具 举报

发表于 2017-9-17 16:15:23 | 显示全部楼层   广东省肇庆市
厉害厉害厉害
回复 支持 反对

使用道具 举报

发表于 2017-9-17 15:23:12 | 显示全部楼层   天津市天津市
谢谢分享了辛苦了谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表