精易论坛

标题: 【原创】易程序实现效验自身MD5,纯核心库实现 [打印本页]

作者: 帅气与大侠    时间: 2017-9-15 16:43
标题: 【原创】易程序实现效验自身MD5,纯核心库实现
本帖最后由 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的工具,它的界面如下



  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
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.软件常用功能事件中

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


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








作者: onlydbg    时间: 2017-9-15 16:47
长知识了 666666 顶
作者: sa123123    时间: 2017-9-15 16:58
学习了,感谢分享
作者: q522797354    时间: 2017-9-15 17:04
看看 学习下 ·············

作者: 进击    时间: 2017-9-15 17:33
感谢分享!!!!

作者: 伤心猪大肠    时间: 2017-9-15 17:35
写入字节集不就改变了md5吗?
作者: anner    时间: 2017-9-15 17:42
学习了,感谢分享
作者: 云南丿小海堂    时间: 2017-9-15 18:16
程序实现效验自身MD5,纯核心库实现

作者: ゞωǒ天堂牧心    时间: 2017-9-15 18:42
本文方法心得仅供易友学习参考,重要软件请谨慎套用
作者: 一剑磨十年    时间: 2017-9-15 18:59
感谢楼主开源~~~~~~~~

作者: 汉族    时间: 2017-9-15 19:31
我好想看到过可以谁边修改MD5 的源码
作者: w3516330    时间: 2017-9-15 19:43
看看在说话
作者: 小迷人啦啦啦    时间: 2017-9-15 20:01
拿来学习学习!

作者: shabi001    时间: 2017-9-15 20:10
这个可以有
作者: love355024    时间: 2017-9-15 20:47
感谢分享~~~~~~~~~~~~~~~~

作者: hgy19880905    时间: 2017-9-15 22:04
如果您要查看本帖隐藏
作者: jspengcf    时间: 2017-9-15 22:14
校验自身 可以在编译时写入么?
作者: 哥只是一个传说    时间: 2017-9-15 22:37
厉害啊,楼主,佩服!
作者: 529512527    时间: 2017-9-15 22:56
支持一下????
作者: qiuyingjia    时间: 2017-9-15 23:03
可以的,支持
作者: dulang    时间: 2017-9-15 23:41
说好的“纯核心库实现”呢?
作者: 雪山凌狐    时间: 2017-9-15 23:43
来看看学习

作者: xslyhk    时间: 2017-9-16 01:32
谢谢分享哦
作者: 网络注册会员    时间: 2017-9-16 07:39
支持我顶你
作者: wlakys    时间: 2017-9-16 08:29
支持下吧
作者: 忧郁之子    时间: 2017-9-16 10:01
看着不错,支持一下。
作者: Dhs过客    时间: 2017-9-16 12:51

看着不错,支持一下。
作者: 为谁哭泣    时间: 2017-9-17 10:21
666666666666666666666666666666666

作者: jylengmo    时间: 2017-9-17 15:23
谢谢分享了辛苦了谢谢

作者: forevr1799    时间: 2017-9-17 16:15
厉害厉害厉害

作者: kkac    时间: 2017-9-18 17:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一个老学习    时间: 2017-9-21 00:22
好像很厉害 看一眼
作者: 1185384801    时间: 2017-9-23 10:12
看看呢
作者: 2834131316    时间: 2017-10-4 11:48
不错        
作者: 星空Allstar    时间: 2017-12-2 14:50
学习了学习了学习了学习了
作者: 莫泽才    时间: 2017-12-30 21:51
谢谢分享!!!
作者: 萌萌兔    时间: 2021-6-3 00:25
学习学习
作者: web188    时间: 2024-9-17 08:57
感谢分享 赞一个 !




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4