欢迎来到天天文库
浏览记录
ID:38640238
大小:64.50 KB
页数:12页
时间:2019-06-16
《共享软件加密的一些误区及防破解的实用招法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.不要太相信注册表所以把注册码之类的敏感信息放在里边2.不要调用系统时间看是不是试用期已过,可以调用一些系统文件的创建时间3.不要将敏感信息以明文的形式写在程序中,防止直接十六进制查看4.加密或验证部分与软件主体部分耦合度要高(虽然不便维护)5.不要对注册码进行明文比较,防内存补丁,至少md5后比较6.不要将出错提示信息紧跟在加密判断之后,防直接查找字符串,快速定位破解7.检查自己的进程的父进程是否为Explorer.exe,不是就Kill掉,甚至Kill自己8..netwinform程序,最好先混淆,或加密,不然被轻易破解机率为100% 共享软件加密的一些误区 本文发表于《电脑软件编程与
2、维护》2005年12期 作者:星轨(oRbIt) E_Mail :inte2000@163.com 共享软件通常是指那种采用“先使用,后付款”的方式发布的软件,这类软件通常有两个(或多个)不同的版本,公开发布的是一个功能受限制或使用时间和次数受限制的共享版本,只有当用户购买(或注册)之后才可以使用没有限制的正式版本。共享软件从出现的那一天起就深受破解者(Cracker)的“喜爱”,因为相对于防范较为严密或使用硬件加密的商业软件来说,共享软件是比较容易破解的。虽然许多共享软件的作者也采用了时间限制或注册码校验等方法保护自己的软件,但是多数共享软件的作者对软件加密与解密技术不了解,对加密
3、方法的应用和代码编写过程中存在许多漏洞,从而使看似很可靠的加密方法形同虚设。软件破解者(甚至是一些菜鸟级的Cracker)只需要参照网络上的破解教程,按图索骥,就能够去掉一些软件的使用限制,或从内存中抓出正确的注册码,破解高手甚至能够写出注册机,这无疑是宣告了这个软件的死刑。 本人也发布过共享软件,经历过软件刚刚发布就被破解的尴尬,痛定思痛之后,开始研究软件加密与解密之道。思之靡多,终有所悟,其实软件加密与解密之间的斗争,道高一尺则魔高一丈,但是最终往往不是技术致胜,而是心态致胜,从软件破解者的心态考虑加密问题,常常能够兵出奇处,以奇致胜。从软件破解者的角度考虑,以下是一些软件作者常犯的一
4、些错误,本人把它们列举出来,希望对广大软件作者能有所帮助:过分相信Windows注册表的复杂性 注册表是Windows系统存储关于计算机配置信息的数据库,所有的数据都是通过一种树状结构以键和子键的方式组织起来,每个键都包含了一组特定的信息,通过键的名称和路径可以查询和修改这些信息。许多共享软件地作者都将一些比较重要的信息,比如注册信息或时间、次数限制存放在注册表中,以为注册表结构复杂,藏一些数据别人找不到。其实这是一个错误的认识,破解者利用一些注册表操作工具很容易就能获得数据在注册表中的存放位置。RegMon就是一款注册表监视软件,它能够监视系统中运行的程序对注册表的读写操作,一切诡秘在
5、它面前都将大白于天下。还有一个名为RegSnap的软件,它的工作原理就是通过比较程序运行前后注册表的变化确定程序在注册表中的读写位置。由此可见,在注册表中存放信息是不安全的,至少要对存储的信息数据进行加密处理。信息以明文的形式写在程序中 C/C++语言的编译程序对代码中出现的字符串通常不作特殊地处理,直接将其按照数据出现的顺序排放在数据段中。一些软件作者没有注意到这一点,导致程序中使用的一些敏感信息以明文的形式出现在可执行程序中,比如注册表某个键的路径、某个文件路径以及加载的外部动态库名字等等。破解者使用WinHex之类的十六进制编辑软件打开程序文件就可以看到这些信息。图(1)就是用十六进
6、制编辑器打开某软件的截图,从中可以看到这个软件可能动态加载了RegKey.dll这个动态库,可能还操作了注册表SoftwareMicrosoftWindowsArtCompRegInfo位置下的某些键。图(1)可执行文件中的字符串 C/C++程序的设计者稍微修改一下代码就可以避免这种简单的信息泄露,比如字符串“RegKey”,可以在程序中这样声明字符串数据:staticLPCTSTRlpszKey=_T("SfhLfz");其实就是将每个字母向后移了一位(数值上增加1),使用前稍作处理:TCHARszBuffer{32};lstrcpy(szBuffer,lpszKey);for(i
7、nti=0;i
此文档下载收益归作者所有