首页 » 其他技术 » 软件的注册码的写法思路

软件的注册码的写法思路

9123 12

BBextra已经免费了一段时间,最近由于iberry上的一篇帖子,有更多的bber来索取注册码,因此tiandi顺便简单说一下软件注册码生成的方法。这里tiandi将介绍三种注册码实现的思路,或许您还有别的方法来实现。

注册码的生成,无非是拿着一个唯一码(网卡MAC地址,设备PIN,硬盘ID等),进行加减乘除计算后得出的。

第一种简单算法:

BBextra的注册码算法,加上最初的算法一共3种。起先tiandi写这个黑莓上的软件BBextra只是为了图自己方便,因为黑莓有一些功能默认操作系统是没有的,需要额外通过软件来添加,所以一开始BBextra只是为了满足tiandi个人的需求所开发的,因此注册码是根据本机的PIN码来加减乘除后得出的,类似以下:

//sn为用户输入的注册码,makesn()为根据PIN码计算出的正确注册码。
if(makesn(devicePIN).equalsIgnoreCase(sn)) 

起初也没想到这个软件能这么火,一会功夫就1000多个注册码发放掉了,tiandi私心顿起,本来只是写着玩玩,然后就变成听取用户意见,改进功能,适合大众化,并且软件收费了。没料收费刚过一个月,网上已经流传了可以免费获得BBextra注册码的keygen了,原理是用winhex进行内存寻址,找sn附近的值,因为上面的代码导致sn附近肯定会有正确的注册码的信息。

第二种拆分算法:

于是1.05版本tiandi开始改变BBextra的注册码算法,这个算法至今还未被国内crack过,据说越南的某个cracker好像破解过,不知道真假,反正bb上很多软件,最后cracked的都是越南人,那边还算是蛮热衷于bb软件破解了。不过tiandi确信用debug寻址+花点时间耐心,是可以得到1.05版本之后的注册码的。好了,说下新的算法大概如下改变:

//代码为bbextra 1.05之后的部分源代码,sn为15位数字,首先将输入的15位数字拆分存储str1-str8
str1 = getText().substring(0, 2);
str2 = getText().substring(2, 4);
str3 = getText().substring(4, 6);
str4 = getText().substring(6,7);
str5 = getText().substring(7,9);
str6 = getText().substring(9,11);
str7 = getText().substring(11,13);
str8 = getText().substring(13,15);

//然后将str的8个变量通过各种规则计算得出另外的str1-str8
str1 = String.valueOf((Integer.parseInt(str1)+12)*3/7);
str2 = String.valueOf((Integer.parseInt(str2)+52)*3/7);
...

//最后判断,此时对比的值和用户输入的15位序列号完全不同,再加上对比的值还是用8个变量拼凑在一起的,8个变量必定在内存中不是连续的,用winhex找内存相近的方式,基本上是不可能的。
if(makesn(devicePIN).equalsIgnoreCase(str1+str2+str3+str4+str5+str6+str7+str8));

//为了保险起见,还可以将makesn函数写在别的类里,比如mainscreen.makesn()进行调用,那么内存地址会更远了。
if(mainscreen.makesn(devicePIN).equalsIgnoreCase(str1+str2+str3+str4+str5+str6+str7+str8));

第三种在线注册:

最后一种方式,对于国外的用户,因为国外的在线购买机制很成熟,用户付款后直接自动给用户注册码,这就得采用在线注册的方式,很容易理解和实现,搞一台服务器,上面放个api,bbextra请求httpconnection,然后check sn是否正确。当然也是为了安全起见,你可以把http的实际地址,分为多个变量存放。

getViaHttpConnection(u1+u2+u3+u4+api+pin);

这里我只提供设计注册码的一种思路,用的是java的代码,其他语言的代码都应该类似,写程序不过是一种逻辑而已,用什么代码都差不多那么回事。

文章评分1次,平均分5.0

本文原始地址:https://www.tiandiyoyo.com/2014/01/how-to-create-your-sn-for-your-own-app/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

    没有相关的文章

评论前先开启评论开关:


12 Comments

  1. Yu :

    自己搞注册码?
    以前写过,for each ch^=0x23 之类弄个magic key 再取模36,放到[0-9A-Z]这个区间.
    还有直接hash之类。

    不过offline的话还是比较困难的,一些反汇编的高手还是可以弄出来的。只要这个软件价值足够大…

  2. 神父 :

    我是来打酱油的

  3. 郑永 :

    功能相当简单的一种,我就是看到外面的 记账软件太杂,没有我要的简洁。

    • tiandi :

      你不是搞了个简单的记账的txt么。

      • 郑永 :

        是啊,我做的是替我解决了,但是我现在突然很想搞个网络版,本地存储网络上进行同步数据,我搞两个,一个是php的,另一个是vb的,可数据库都是利益txt的,不过现在用的方法是本地txt文件夹做了同步,就是下了g网盘同步软件进行同步,唯一不好的是,查看麻烦,记账实时的,我要对方一输入,网页就立即显示,相当于刷微博,官方页面实时显示数据。

  4. 郑永 :

    忘了你是软件开发的,给你个差事啊,搞个简单的网络记账功能,怎么样?当是练练,开个价,我付钱。

  5. FROYO :

    貌似第三种比较好

  6. 就当我认认真真看了哈,呵呵。

  7. 表示思路不错啊。小白飘过。哈哈

载入分页评论...