下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

运用C++Builder中的MD5实现软件防护的目的

作者:课课家教育     来源: http://www.kokojia.com点击数:1489发布时间: 2017-01-30 10:00:38

标签: C++Builder程序代码开源软件

大神带你学编程,欢迎选课

  大家在开发程序的时候,是否有接触过MD5呢?其实MD5的应用还是比较广泛的,那么什么是MD5呢?MessageDigestAlgorithmMD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。那么今天小编就带大家学习一下:运用C++Builder中的MD5实现软件防护的目的。

运用C++Builder中的MD5实现软件防护的目的_C++Builder_程序代码_开源软件_课课家

  一、共享等同于免费?

  在教程开始之前,小编先问大家一个问题,大家认为共享是否就是免费的意思呢?其实免费和共享是两个不同概念来的。随着因特网的不断的发展,大家可以发现一个现象就是:“注册+共享”这一种模式已经日渐成为程序员发布自己软件的主要一种手段了。但是同时我们也会发现,随之而来的破解手段也已经变得越来越高明了。那么问题就来了?怎样才可以真正的保护到自己辛辛苦苦制作出来的劳动成果,不会被暴力修改或者是破解呢?这是一个值得我们深思的问题。在这里,小编就为大家介绍一个十分常用的解决方法吧,那就是使用MD5摘要值验证,大家不妨可以尝试一下。

  其实MD5作为一个公开算法,可以实现的方法真的是非常的多。就比如说:Windows里面自带的API(API就是操作系统留给应用程序的一个调用接口)、一些开源软件等。另外,Delphi以及C++Builder这两者中集成的Indy里面也会有这个现成的MD5控件。使用API的方法来实现MD5虽然效率是非常的高,但是还是有缺点的,那就是太繁琐了。如果大家想要了解它的具体方法,可以参阅一下MSDN(早期微软在推广Win32程序设计以及开发工具时,专门为开发人员所提供的一个服务)上crypt开头的那几个函数说明。当然啦,大家也可以使用C++Builder里面的MD5控件。这种方法固然是非常的方便,但是相对来说速度还是比较慢的,而且仅仅只可以处理一些以‘\\0’结尾的字符串。所以如果真的想要使用这个控件的话,那么我们还需要对待验证数据做一些适当的预处理。那么预处理的关键是什么呢?就是在于将一些比较重要的内容挑选出来然后再进行计算,这样子做的话,一个方面可以去除‘\\0’,另外一个方面就可以大大的减少待验证内容的长度,这个时候我们仅仅只需要计算关键代码的摘要值就可以了。

  二、详解程序代码

  在这里,小编要向大家说明一点,那就是在BorlandHelp以及网上里面关于IndyMD5控件介绍真的是非常的少。所以这一段编程代码基本上就是小编自己摸索出来的结果,另外大家要注意一点,那就是这个程序在Indy6.0以及C++Biulder6.0下正常运行出来的。

  首先我们要做的就是先在Indymisc里面拖选一个MD5控件,假设这个控件的name属性为cipher,具体的程序代码如图所示:

第一页程序代码第二页程序代码第三页程序代码

  温馨提示:大家在进行调用时,可以使用Application->ExeName.c_str()当作fname传入。但是同样我们还要注意一点,那就是在如果直接在C++Biulder中使用run的话,这样就会引起异常情况发生了。但是也没关系,因为发布出来的源程序是不会有任何的问题。在这里,小编为了简单的说明一下,在汇编代码中没有恢复已经保存寄存器,使用的时候可以再加上去,或者是我们在发布的时候再将optionsèAdvancedComplier中的Registervariables设置成为none就可以了。

  三、实现方法

  大家可以发现,使用MD5值来保护共享软件的方法真的有非常的多。其中最简单最直接的方法,就是先将正常的执行模块的MD5摘要值静态保存在外部文件中(就比如说:包含在注册文件中)。每一次我们在运行的时候,计算自身的MD5并与之进行比较,从而就可以判断出是否已经被修改了。最高深的一点,就比如说使用正确的MD5来还原一下正确的入口地址,或者是参与一些注册码或者是机器码的计算。在这里,小编认为最好的方法就是加上自身MD5验证之后再继续使用ASPack或者是ASProtect之类的压缩软件加上壳。这样做的话,一旦cracker使用脱壳软件脱壳,软件就不会正常的执行起来,对于很多cracknewbie来说十有八九都会被怀疑脱壳失败,进而就会放弃了。

  小编结语:

  其实小编想说的是,破解和软件保护这两者一直都是魔道相长的一对矛盾,因为就算是软件再怎么的严密防范,也肯定会有人可以破解出来的。我们需要做的事情仅仅只是将大量的菜鸟cracker挡在门外,假如说非常不幸的被高手盯上了,那么小编就只可以恭喜你。这就证明了一点,那就是你的软件真的非常有利用的价值,继续加油哟!

  课课家会一直更新关于编程语言的文章,请继续关注我们的网站:课课家教育。谢谢!

赞(28)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程