软件保护之注册算法篇

软件保护之注册算法篇
fangle 2003

一、前言

通常地,软件保护可分为三大环节:反调试、抗分析、防爆破

1、反调试,给你的软件引入非常规的运行机制,例如加壳,来限制调试工具对你的软件的掌控
   能力。如今调试工具越来越强大,但调试工具的设计目标毕竟是光明正大的,大多不会专门
   防备反调试技术。所以反调试技术还是相当重要的:它能够大大减少你的潜在对手。毕竟,
   如果调试工具能够很轻易地支配你的软件,则任何一个程序员都可能成为cracker,而普通程
   序员的队伍何其庞大?所以,反调试是软件保护的第一道防线。它已基本实现标准化:加壳
   工具已经满天飞了。

2、抗分析,假如你不幸遇到对win32应用环境有足够了解的对手,以至于你的软件最终还是被凶
   悍的调试器任意蹂躏,你也还远没有被打败,你还有第二道防线可守——抗分析。在这道防
   线里,你有很多办法可以限制cracker掌握你的注册算法,从而阻止注册机的出现:注册机的
   出现意味着你被彻底打败,所以第二道防线是你必须固守的。

3、防爆破,如果你的第二道防线足够坚固,往往会导致你的对手放弃注册,他们会试图直接修
   改你的可执行文件,强行改变它的执行流程,比如让它不注册也能正常运行。所以你还需要
   部署第三道防线,教训这些爆破者。防范爆破的手段很多,而且事实上你的防爆能力与你的
   第二道防线的架构直接相关,所以总体来说,第二道防线还是最重要的。

本文针对的是第二道防线,目的在于阻止cracker掌握你的注册算法。

注册算法的目的是只向合法用户提供完整的功能,通常采用注册码验证的方式实现:

1、用户向软件作者提交用户码U,申请注册。
2、软件作者计算出注册码R=f(U),回复给合法用户。
3、用户在软件注册界面输入U和R。
4、软件验证F(U,R)=0来判定用户的合法性。

其中一些常用术语说明如下:

1、用户码U:用于区别用户身份。它可能仅仅是用户自定义的一个用户名,这种形式的用户码与
   用户身份弱相关,假如一对合法的用户码、注册码被公开,则任何人都可以用来对软件进行
   注册;它也可能是用户机器的硬件特征码,这种形式的用户码与用户身份强相关,可以有效
   防止一次注册,多人享用的局面出现,但对于合法用户而言很不方便,一旦更换或升级机器,
   就必须重新申清注册码。

2、注册码R:用于验证用户身份。它可能与用户码具有惟一对应关系,也可能同一个用户码有若
   干个注册码相对应,也可能同一个注册码有若干个用户码相对应。如果用户码和注册码的取
   值空间非常大,即使用户码与注册码不是惟一对应关系,非法用户“碰巧”得到一对合法的
   用户码、注册码的概率也是微乎其微。

3、注册机:我们把R=f(U)中的小f称为注册机,掌握了注册机就有能力针对任何用户码计算出
   相应的注册码。

4、验证机:我们把F(U,R)中的大F称为验证机,软件使用验证机验证注册码的合法性,即,
   当且仅当R=f(U)成立时,F(U,R)=0。

在软件注册保护的“初级阶段”,验证机与注册机没有本质区别,即: F(U,R)=f(U)-R。所以
cracker甚至可以直接让你的软件担当注册

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值