关于软件注册码的几个重要提醒

avatar shenyifan 2023-02-07 15:58 445次浏览 评论已关闭

深易凡软件库2月7日消息,做为一个软件库分享着众多的社交软件包括自带的红包功能,其中包括有单透,秒抢,埋雷,爆粉,机器人,红包辅助软件等等。今天的目的是提出一种在软件中添加注册码的方法。至于提出的方法是否无效,是否经得起一些逆向专家的破解,还得验证。我只是陈述我小组的观点。

第一,目的。
目的很明确,就是根据注册软件的组信息,生成注册码。并且软件本身必须能够检查注册码是否无效。并且可以避免别人逆向算出校验算法,导致注册机;可以防止他人使用暴力破解方式间接修正软件执行代码,绕过注册。

二、解释的方式
要实现上述目标,有两个方面尤为重要。第一,注册码生成算法的选择;第二,软件要有自己的验证机制,避免篡改可执行程序。下面我们来区分和阐述这两点。

1.注册码生成算法的选择
现在很多软件都有注册机,很大程度上是因为软件本身的注册码生成算法太容易了。破解者可以很容易地从反汇编代码中挖掘出注册算法,并且可以很容易地恢复成C代码。这些饼干不是什么大师,但也算是牛逼的人。我也了解了相关的知识。反汇编代码不难理解。难的是在少量的汇编代码中找到彼此之间的调用关系,逆向写出相应的代码。当然,也有一些懒人间接把汇编代码挖出来,不知道详细的执行过程就能达到破解的目的。
反正别人再怎么NB,最多也要反汇编,最多看汇编代码。而如果我们的算法足够多功能,他们就完了。纵观当今标准化的加密算法,不外乎对称加密和非对称加密。我们不用自己创造算法,也不做吃力不讨好的事。我们自己设计的算法的安全性远不如现在常用的算法。我先简单列举一下常用的算法,解释一下为什么要选择我们想要的算法。
A.有两种流行的对称加密算法,DES,AES AES。银行业普遍使用DES算法,AES比DES晚,但安全性比DES好。所谓对称,就是只需要一个密钥,加密和解密用同一个密码,所以叫对称加密。如果我们用它来生成注册码,那么我们必须在我们的软件中保存这个密钥。不管钥匙在哪里,它总是存在于一个中心的地方,我们没有办法保证这个钥匙的安全。原因很简单。破解者只需要跟随代码就可以知道我们从哪里读取这个密钥。
b非对称加密包括RSA、椭圆曲线等。RSA是最流行的一个。虽然椭圆曲线的效率和安全性比RSA好,但是比较复杂,原理我还是不懂,呵呵。所谓不对称,是因为它有两个密钥,一个叫公钥,一个叫私钥。公钥可以公开发布,私钥自己保管。用公钥加密必须用私钥解密,否则用私钥加密必须用公钥解密。所以我们知道可以把公钥的内容保存在软件里,可以是地下的(当然也要藏在软件外面,可以尝试任何能让它难以破解的东西)。然后,我们可以保留私钥。其他的拿不到私钥,基本上也算不出注册码。

2.至此,我们知道可以使用RSA算法,保证软件的安全性。注册器最多不能发生,因为别人没有私钥。但是具体怎么做,我们可以按照以下流程。

A.注册码生成流程:
注册信息(包括用户名等信息)- > RSA私钥加密->注册码。

B.软件验证注册码流程:
注册码- > RSA公钥解密->注册信息。

3.在处理了第一个目的之后,我们仍然很难防止他人间接篡改二进制可执行文件,从而绕过注册码的验证。但是,总有办法。为了解决这个问题,我想到了一个办法:软件自检。具体做法如下:
A.我们为自己的软件生成校验值,这里需要使用汇总算法。最常用的总结算法是MD5。相信大家都听说过,这里就不赘述了。我们只需要读取可执行程序(在Windows下,可执行文件是可读的,但如果想自己重写,那就没办法了)并计算校验值。
B.然后,我们可以判断检查值是否正确。如果不正确,我们的软件可以间接杀死它。

但是这里有一个问题,我们如何在软件中保持正确的校验值?而不是,例如,在文件或注册表中,所以它迟早会被知道。还有人可以间接修正校验值使之与错误的校验值相反,从而欺骗软件校验。这里有一个解决方案:回到(第1点和第2点)中描述的解决方案。怎么还?我们继续吧。

4.保留软件的校验值:让校验值集成到注册码中。我们的修正过程(第2点)如下:

A.注册码生成流程:
注册信息(包括用户名等信息)+软件验证值- > RSA私钥加密->注册码。

B.软件验证注册码流程:
注册码- > RSA公钥解密->注册信息+软件校验值。

这样就可以判断软件是否注册成功了。首先按照上述步骤计算注册信息和软件校验值,然后将两者与后期的用户信息和计算出的校验值进行比较。如果两人都结婚了,则明确该软件已经注册成功。

5.试着破解它。
如果知道详细流程,如何破解软件?首先,我们知道当时不可能编写注册机。唯一的办法就是暴利破解,但是暴利破解,软件加了自检。但是,总有一个稀疏的秘密,暴利还是可以达到的。我们先回忆一下,如果按照上面的方法添加注册码验证。所以我们的代码是这样写的:

int RSA_Check( char * sn ){
这个函数计算软件的校验值,根据注册码sn解密校验值和用户信息,然后比较看是否可以校验。
}
….
当软件启动时,我们调用上面的函数。
if( RSA_Check( sn ) ){

总结

以上就是今天所分享的内容了,更多行业知识、软件引荐、功能比照、工具测评请关注深易凡软件库。每天给大家带来更高效的企业服务软件,其中包括有微信,惠易购,酒友购,赞聊,淘米购,叮咚盲盒,青蛙易购,支付宝,香蕉赶集,乐享购,淘盟铺,亲聊,探聊,诚智通,伶信,QQ,新易选,红包辅助,享乐好物,易民购,梦幻盲盒,苹果微信多开,微信分身,安卓微信多开,淘客购,旗语,点约,优品铺,创信等现如今热门社交软件,其中功能有秒抢,避雷,埋雷软件,扫尾,单透软件等一些红包强项外挂功能软件免费下载使用!

发表评论
请先登录后再评论~