一篇带给你软件加密的攻与防 (一篇带给你软弱的文章)

教程大全 2025-07-12 14:55:28 浏览

破解思路1:从软件入手,绕开加密点

破解思路2:从加密狗的驱动程序入手,伪造驱动程序

破解思路3:从加密狗硬件入手,仿制加密狗

PUF:物理上无法克隆

当你辛辛苦苦、历经万难,成功开发出一套软件的时候,如果有黑客从授权电脑上破解了软件,然后大量拷贝、倒卖,你会是什么样的心情?

如果你没有感觉、或者无所谓的话,那只能说明目前写的程序还不是足够的优秀,还没有进入黑客的目光中~~

但是,在很多看不到的战场上,软件的破解和反破解大戏,时刻都在上演着。

以前听过这么一个段子:任何一家公司都不会公开说自家的软件是最安全的。

只要他说出来,就会分分钟遭到破解,因为这样的声明,无疑是给黑客们下了一道挑战书。

软件加密的攻与防,是一个没有终极结果的无限游戏,只会永远进行下去。

但是,这并不妨碍我们给自己的软件,加上一道防火墙,在一定的范围内,最大程度的保护自己的劳动成果。

这篇文章我们就来聊聊关于软件加密的那些事!

上周末偶遇到当时对接的技术人员,聊到了之前的那个产品,于是就有了此文。

纯软件加密

我们在安装一些有版权的软件时,一般都会要求输入一个序列号。

当这个序列号被输入之后,它就与当前这台电脑的硬件信息进行绑定。

换句话说,如果把这个软件安装在另一台电脑中时,输入同样的序列号,肯定是无法运行的。

因为在第一次安装的时候,软件就会搜集当前电脑的 CPU、硬盘、主板、网卡等硬件信息,并且把这些信息与序列号进行绑定。

当然了,每一个软件选择哪些硬件信息不是确定的。因为要考虑到用户会更换硬盘、更换网卡硬件设备等。

因此,大部分软件都是搜集那些更换可能性比较小的硬件,并且对不同的硬件赋予不同的权重,来计算一个最终的结果。

在很多的消费类产品、工业产品中,都是按照这样的思路来对软件产品进行保护的。

其中的缺点很明显:

也许,这样的事情对于我们平常使用的电脑来说根本不会发生,但是在一些工业产品中,这样的破解方式就不得不被重视了。

这样的软件保护方式,是所有纯软件加密保护的缺点,无法彻底的解决,只能通过使用各种小技巧来降低被破解的可能性。

加密芯片

加密芯片,就是专门用来进行加密的芯片,这样说好像等于没说一样!

其实就是利用加密芯片本身,来保护另一个软件或者硬件不被破解。

我们这里就拿软件举例,它俩的逻辑关系如下:

在软件运行的过程中,定期的与加密芯片进行通信。

只有当加密芯片返回正确的结果时,软件才会正常的执行。

如果加密芯片不存在、或者加密芯片是一个假的仿制品,那么被保护的软件就可以立刻侦测到,从而停止运行,这样就达到了保护的目的。

即使通过各种手段把软件拷贝出来,放在另一台设备中去执行,由于没有对应的加密芯片,因此软件也会拒绝执行。

加密芯片的两种硬件连接形式

随着软、硬件的不断发展,生产工艺的不断提高,各种加密需求场景的层出不穷,加密芯片的存在形式也是多种多样。

最常见的就是类似于信用卡使用的 U 盾那种形式,通过 USB 接口与电脑(或其他硬件设备)进行连接:

通常,把这种通过 USB 接口连接的加密设备称作 Dongle(加密狗)。

另外,还有一种在嵌入式设备中比较常见的连接方式:把加密芯片通过一根 GPIO 口,与主控芯片进行通信,也就是采用单总线方式进行通信:

以上这两种连接方式,仅仅是硬件上的不同而已,加密过程、原理都是一样的!

加密过程

我们就拿USB加密狗来描述加密过程:

当我们把一款软件部署到客户的设备中时,会为每一台设备安装加密狗的驱动程序,并且配置一个加密狗硬件。

每一个加密狗硬件中,都有一个唯一的ID,并且内部被预先烧录一个秘钥,这个秘钥就用来对数据进行加密和解密。

当我们的软件需要验证时,就调用加密狗驱动提供的 API 函数。

该 API 函数在接收到软件调用时,就会通过 USB 口,与硬件加密狗进行通信,发送请求数据。

加密狗在接收到请求数据之后,把计算结果再通过 USB 发送给驱动程序,进而返回到应用程序。

在这个通信过程中,会使用秘钥对数据进行加密、解密,以此来保证通信链路中的数据安全性。

加密保护的攻与守

破解思路1:从软件入手,绕开加密点

所谓的加密点,就是指在应用程序中,调用加密狗驱动 API 函数的地方。

一篇带给你软件加密的攻与防

黑客可以对软件的二进制代码进行反编译,结合加密狗驱动的 API 函数手册,来分析、找出这些加密点,然后修改二进制代码,来绕过这些加密点函数调用。

这样的话,软件就相当于是裸跑一样了,完全与加密狗失去了数据交互

对于这样的破解方式,我们只能从软件入手,增加黑客找出加密点的难度了。

例如:在代码的很多个地方安装加密点,在一些辅助的动态库中安装加密点,对加密点的 API 函数调用进行一些混淆处理,让 API 函数调用的返回结果参与到软件的业务逻辑中,这样的话,就必须调 API 函数才可以让程序正常执行。

破解思路2:从加密狗的驱动程序入手,伪造驱动程序

黑客们可以根据加密狗驱动的API手册,自己写一个伪造的驱动程序,其中包括合法驱动中所有的API函数,每个函数的参数和返回值,都满足手册的说明。

这样的话,伪造驱动程序中的 API 函数,在接收到软件的调用后,不会与加密狗进行通信,而是直接返回正确的结果给软件,从而达到破解的目的。

从上图可以看出:伪造的驱动程序在接收到程序的调用之后,就直接把“正确的”的结果返回了,压根没有加密狗硬件什么事情。

这样的破解方式,利用的就是驱动程序中 API 函数中参数和返回值的静态特性,而且我们也没有对驱动程序的合法性进行验证。

针对以上这两点,可以设计出相应的反破解方式:

破解思路3:从加密狗硬件入手,伪造加密狗

之前我们说到:在加密狗硬件中,存在一个唯一的 ID 和预先放置的秘钥。

如果要破解加密狗硬件,那么黑客们就必须通过各种手段来复制这些信息。

芯片也能克隆?没接触过硬件的小伙伴,可能感觉小小的芯片里成千上万的晶体管电路怎么可能抄的出来?

可以理解。但是,这个正和逆本身就是共存的。

搞板级硬件的同学可能抄过别人的 PCB 板,IC 逆向类似,只不过需要专业的工具而已。

如今芯片级别的逆向工程已经是非常的成熟了。

对于一些简单的芯片,2K~3K 的价格就可以分分钟帮你逆向出来。

关于这部分内容,我不是特别了解,具体的步骤比较多,这里就不一一叙述了。

总之,请你相信:芯片逆向是可能的,这都不是事!放几张截图来感受一下:

道高一尺,魔高一丈!攻与守的无限游戏,总是此消彼长。

针对剖片这种终极大招,加密芯片的厂商也不敢懈怠,也想出了很多的破解方式。

例如:在加密芯片之上增加一层覆铜保护,这个覆铜同时充当电源的角色。

当剖片设备在磨掉这层覆铜时,也就破坏了芯片的电源,这样破解设备就无法通过探针等手段来干扰芯片的工作,因为芯片都停止工作了,压根就不给你探测的机会。

还要另外一种比较牛逼的方式,来阻止黑客获取加密狗中的秘钥信息。

一般来说,秘钥文件都是存储在芯片中的非易失性存储设备(NVM)中的,如果是这样的,黑客们就比较容易从存储设备中读取秘钥信息。

PUF:物理上无法克隆

近年来,一种称作 PUF(Physically Unclonable Functions 物理上无法克隆) 的技术非常热,它通过一种无形的方式来“存储”秘钥信息。具体来说是下面这样:

简单的说,就是在加密芯片中并不存在秘钥信息。

当加密芯片自己需要使用秘钥的时候,就利用芯片的各种物理结构、电气特性,动态的生成秘钥,使用之后立刻销毁。

这样的话,黑客就无从获取秘钥了。

即使仿制了一个加密狗硬件,但是由于工艺的原因,芯片的物理结构、电气特性等都不相同,生成的秘钥也是错误的,无法与应用程序进行正确的加密、解密,从而达到了反破解的目的。

关于这部分的内容,我也不是很专业,找了下面一些资料,感兴趣的小伙伴可以再深入了解一下:

SRAM PUF技术(

PUF :一种让芯片更安全的新技术(

PUF物联网安全秘钥生成技术(


怎么样才能很好预防黑客攻击

九、防范木马程序木马程序会窃取所植入电脑中的有用信息,因此我们也要防止被黑客植入木马程序,常用的办法有:● 在下载文件时先放到自己新建的文件夹里,再用杀毒软件来检测,起到提前预防的作用。 ● 在“开始”→“程序”→“启动”或“开始”→“程序”→“Startup”选项里看是否有不明的运行项目,如果有,删除即可。 ● 将注册表里 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下的所有以“Run”为前缀的可疑程序全部删除即可。 十、不要回陌生人的邮件有些黑客可能会冒充某些正规网站的名义,然后编个冠冕堂皇的理由寄一封信给你要求你输入上网的用户名称与密码,如果按下“确定”,你的帐号和密码就进了黑客的邮箱。 所以不要随便回陌生人的邮件,即使他说得再动听再诱人也不上当。 做好IE的安全设置ActiveX控件和 Applets有较强的功能,但也存在被人利用的隐患,网页中的恶意代码往往就是利用这些控件编写的小程序,只要打开网页就会被运行。 所以要避免恶意网页的攻击只有禁止这些恶意代码的运行。 IE对此提供了多种选择,具体设置步骤是:“工具”→“Internet选项”→“安全”→“自定义级别”,建议您将ActiveX控件与相关选项禁用。 谨慎些总没有错!另外,在IE的安全性设定中我们只能设定Internet、本地Intranet、受信任的站点、受限制的站点。 不过,微软在这里隐藏了“我的电脑”的安全性设定,通过修改注册表把该选项打开,可以使我们在对待ActiveX控件和 Applets时有更多的选择,并对本地电脑安全产生更大的影响。 下面是具体的方法:打开“开始”菜单中的“运行”,在弹出的“运行”对话框中输入,打开注册表编辑器,点击前面的“+”号顺次展开到:HKEY_CURRE-Microsoft\Windows\CurrentVersion\InternetSettings\Zones\0,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可,关闭注册表编辑器。 无需重新启动电脑,重新打开IE,再次点击“工具→Internet选项→安全”标签,你就会看到多了一个“我的电脑”图标,在这里你可以设定它的安全等级。 将它的安全NT_USER\Software\等级设定高些,这样的防范更严密。

如何避免被木马攻击系统

如何避免木马的入侵1、不要执行任何来历不明的软件对于从网上下载的软件在安装、使用前一定要用多几种反病毒软件,最好是专门查杀木马的软件进行检查,确定无毒了再执行、使用。 2、不要相信你的邮箱不会收到垃圾和带毒的邮件永远不要相信你的邮箱就不会收到垃圾和带毒的邮件,即使从没露过面的邮箱或是ISP邮箱,有些时候你永远没办法知道别人如何得知你的mail地址的。 3、不要轻信他人不要因为是你的好朋友发来的软件就运行,因为你不能确保他的电脑上就不会有病毒,当然好朋友故意欺骗的可能性不大,但也许他(她)中了黑客程序自己还不知道!同时,网络发展到今天,你也不能保证这一定是你的朋友发给你的,因为别人也可冒名给你发邮件。 4、不要随便留下你的个人资料特别不要在聊天室内公开你的Email地址。 因为你永远不会知道是否有人会处心积虑收集起你的资料,以备将来黑你!更不要将重要口令和资料存放在上网的电脑里,以防黑客侵入你的电脑盗走你一切“值钱的东东”。 5、网上不要得罪人在聊天时,永远不要以为网络上谁也不认识谁就出言不逊,这样会不小心得罪某些高人,到时找你开刀。 6、不要随便下载软件特别是不可靠的小FTP站点、公众新闻级、论坛或BBS上,因为这些地方正是新病毒发布的首选之地。 7、最好使用第三方邮件程序如Foxmail等,不要使用Microsoft的Outlook程序,因为Outlook程序的安全漏洞实在太多了,况且Outlook也是那些黑客们首选攻击的对象,已经选好了许多攻击入口;8、不要轻易打开广告邮件中附件或点击其中的链接因为广告邮件也是那些黑客程序依附的重要对象,特别是其中的一些链接。 9、将windows资源管理器配置成始终显示扩展名因为一些扩展名为:VBS、SHS、PIF的文件多为木马病毒的特征文件,更有些文件为又扩展名,那更应重点查看,一经发现要立即删除,千万不要打开,只有时时显示了文件的全名才能及时发现。 10、尽量少用共享文件夹如果因工作等其它原因必需设置成共享,则最好单独开一个共享文件夹,把所有需共享的文件都放在这个共享文件夹中,注意千万不要系统目录设置成共享!11、给电子邮件加密为了确保你的邮件不被其它人看到,同时也为了防止黑客们的攻击,向大家推荐一款加密专家——PGP,相信它一定不会让你失望的!12、隐藏IP地址这一点非常重要!!你上网时最好用一些工具软件隐藏你的电脑的IP地址,如使用ICQ,就进入“ICQMenu\Securi-ty&Privacy”,把“IP Publishing”下面的“Do not Publish IP ad-dress”选项上。 13、运行反木马实时监控程序最后,好是最重要的一点就是你在上网时必需运行你的反木马实时监控程序,如、the cleaner, 它的实时监控程序TCA,可即时显示当前所有运行程序并有详细的描述信息,加外如加上一些专业的最新杀毒软件、个人防火墙进行监控那更是放心了,当然这要你的爱机够档次才行,你说呢?

防DDOS,防CC攻击,要怎么防,才更有效

防御CC攻击最好的办法当然是机房里面内置的硬件防火墙。 DDOS也是一样的,软防仅仅能防护500C左右,毕竟软防靠的是宽带,而硬防能高效的识别并且拦截。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐