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的代码,其他语言的代码都应该类似,写程序不过是一种逻辑而已,用什么代码都差不多那么回事。
自己搞注册码?
以前写过,for each ch^=0x23 之类弄个magic key 再取模36,放到[0-9A-Z]这个区间.
还有直接hash之类。
不过offline的话还是比较困难的,一些反汇编的高手还是可以弄出来的。只要这个软件价值足够大…
哦…我当时C做的,java不知道怎样
我是来打酱油的
功能相当简单的一种,我就是看到外面的 记账软件太杂,没有我要的简洁。
你不是搞了个简单的记账的txt么。
是啊,我做的是替我解决了,但是我现在突然很想搞个网络版,本地存储网络上进行同步数据,我搞两个,一个是php的,另一个是vb的,可数据库都是利益txt的,不过现在用的方法是本地txt文件夹做了同步,就是下了g网盘同步软件进行同步,唯一不好的是,查看麻烦,记账实时的,我要对方一输入,网页就立即显示,相当于刷微博,官方页面实时显示数据。
星期一详谈吧,你用什么IM工具?
忘了你是软件开发的,给你个差事啊,搞个简单的网络记账功能,怎么样?当是练练,开个价,我付钱。
怎么个简单法子?
貌似第三种比较好
就当我认认真真看了哈,呵呵。
表示思路不错啊。小白飘过。哈哈