㈠ 破解高手快来!看看谁能破解我自己写的注册码生成算法
样本太少,无法分析
0000000000000000 900270-1022702-653358-775790
可能不对,
但你的算法一定可逆,只要有一定数量的样本。
因为连续的数字或者字符间是等差的。
如果你想做成比较不可逆的,
简单一点的办法,建议再加入一维(例如,私钥,随机素数等)
再进行位层面上的运算
㈡ 根据两组注册码推算加密规则:
我们如今见到的大多数软件的虽然在注册算法,验证方式都各不相同自成体系。但不管怎样变化都没有脱离出一个关于注册码的定式:注册信息 + 算法计算 = 注册码 。概括地说就是如今大多数软件所采取的注册码生成的方式都是按照:F(注册信息) = 注册码,F(X)表示特定的算法。这样的形式计算得出的。大家也可以留心观察一下平时分析所遇到的软件,绝大部分都是采用这样的方式进行注册码计算的,无论其中的那个F(X)采取何种复杂的计算,其最根本的形式都是一样的。 纳金网为您解答!narkii com
这个计算模式,对于破解软件的人来说是一件好事。为什么呢,因为不论注册算法如何,只要能够分析出详细的计算过程或是核心的计算方法都可以轻松的做出注册机。也许有人说他们的算法十分强劲,但是,由于最基本的模式的限制,我们甚至不用分析出具体算法只需要找到算法计算的结果,就可以达到破解的目的。所以说:F(注册信息) = 注册码这种经典的模式是有一定的局限性的,有的时候这样的方式根本起不到保护软件的作用。
那么,还有没有其他的模式呢!其实,有的人已经注意到这个问题了于是一种新的注册码计算模式出现了,这个模式可以概括成:F(注册信息) = G(注册码)也就是说,对注册信息和注册码按照不同的算法,同时进行计算。以前的注册码都是“被动”的,计算出的结果是什么注册码就是什么,但现在情况不同了,注册算法计算出的结果必须和注册码经过计算后的结果相同才能注册成功。
这样的好处就是,即使破解者分析出了计算注册码的算法,也不一定能够做出符合条件的注册机,因为注册码不仅需要经过计算,而且要保证两个算法计算得到的结果要相同。
对于这样的计算模式,破解的工作量也就无形中加大了,不仅要同时分析出两种不同的算法,而且还要保证计算得到的结果相同。可以肯定,这确实是一种很不错的方法。
下面,我们就通过两个非常简单的实例来给大家介绍一下这种方法的实际应用。
首先来看看第一个例子,这是一个crackme我们先来查一下壳,用peid检查一下结果程序没有加壳。现在就用OD来打开它,通过字符串查找的方法很快就可以找到关键的代码了,过程就不详细说了重点在分析。我们来到一下代码处:
00425050 |. 55 PUSH EBP ; 来到了这里
00425051 |. 68 11514200 PUSH CrackMe.00425111
00425056 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00425059 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0042505C |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042505F |. 8B83 B8010000 MOV EAX,DWORD PTR DS:[EBX+1B8]
00425065 |. E8 96C9FEFF CALL CrackMe.00411A00 ; 取注册名位数
0042506A |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0042506D |. 8B83 BC010000 MOV EAX,DWORD PTR DS:[EBX+1BC]
00425073 |. E8 88C9FEFF CALL CrackMe.00411A00 ; 取假码位数
00425078 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; EBP-C=假码
0042507B |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0042507E |. E8 71D7FDFF CALL CrackMe.004027F4 ; 计算注册码的CALL,跟进
00425083 |. 8BF0 MOV ESI,EAX
00425085 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00425088 |. E8 13010000 CALL CrackMe.004251A0 ; 计算注册名的CALL,跟进
0042508D |. 8BF8 MOV EDI,EAX
0042508F |. 3BFE CMP EDI,ESI 注册码的计算结果与注册名的计算结果相比
00425091 |. 74 18 JE SHORT CrackMe.004250AB 两者相等就跳向成功
这段代码就是这个crackme完整的注册流程:首先,记录我们输入的注册名和注册码;然后,将注册名与注册码分别进行计算;最后,将两个计算所得到的结果进行比较,两个结果相等就注册成功。从这里我们就可以看出与以往注册码计算的不同之处了,通常在这里只会对注册名或者其他相类似的注册信息进行计算;而在这个crackme中依次对注册名和注册码进行了计算。计算完成之后,便对两个计算结果进行比较,和往常一样两个值相等就注册成功。
那么,现在我们就来依次分析一下程序对注册名和注册码都进行了怎样一个具体的计算过程。当步过对注册码进行处理的那个call时我们发现注册码的值确实发生了变化,但是这个变化让人感到很意外我输入的注册码是12345经过这个call以后这个值变成了3039本想跟进去详细的看看,可马上想起来了3039刚好就是12345对应的十六进制数,原来在这里程序只是把输入的注册码转换成了对应的十六进制数。看完了注册码我们看看程序对注册名事怎么样进行计算的,跟进对注册名进行计算的call来到下面的代码处:
004251A0 /$ 53 PUSH EBX
004251A1 |. 89C3 MOV EBX,EAX ; EAX=EBX=输入的注册名
004251A3 |. 83FB 00 CMP EBX,0 ; 输入注册名了吗,没有输入就跳走
004251A6 |. 74 13 JE SHORT CrackMe.004251BB
004251A8 |. B8 01000000 MOV EAX,1 ; 使EAX=1
004251AD |. 31C9 XOR ECX,ECX ; ECX清零
004251AF |> 8A0B /MOV CL,BYTE PTR DS:[EBX] ; 取注册名每一位的HEX值,放进ECX
004251B1 |. 80F9 00 |CMP CL,0
004251B4 |. 74 05 |JE SHORT CrackMe.004251BB ; 计算完了吗,计算完毕就跳走
004251B6 |. F7E1 |MUL ECX ; EAX=EAX*EAC
004251B8 |. 43 |INC EBX
纳金网为您解答!narkii com
㈢ 求序列号生成算法
随机序列的算法
作者:unknown 更新时间:2005-03-17
找到了两个算法, 第一个很简单, 但可惜不是随机的, 第二个是典型的伪随机数算法, 可惜要用到2的几百万次方这样巨大的整数, 真痛苦
要是有UNIX上计算密码的源代码就好了
第一种做法:
f(k) = (k*F(N-1)) mod F(N)
其中,
k是一个序列号, 就是要取的那个数的顺序号
F(N)是这样一个序列 F(0) = 0, F(1) = 1, F(N+2) = F(N+1)+F(N) (for N>=0)
第二种做法
V = ( ( V * 2 ) + B .xor. B ... )(Mod 2^n)
N+1 N 0 2
V是要取的随机数, B是个种子, n是随机数的最大个数
原来这个问题, 很高难, 不少数学高手都为解决这个问题写了论文, 咳咳, 偶真是个白痴
呵呵, 效果肯定是不错啦, 因为用不到很大的表.
至于应用是这样的, 比如, 你要给每个用户在注册的时候一个ID但有不希望用户在看到自己的ID的时候能知道其他用户的ID, 如果用SEQUENCE来生成ID的话, 一个用户只要把自己的ID减1就能得到其它用户的ID了. 所以要用随机数来做ID, 这样用户很难猜到其他用户的ID了.
当然主要的问题是, 随机数可能重复. 因此希望使用一个随机数做种子用它来确定一组"无规律"的自然数序列, 并且在这个序列中不会出现重复的自然数. 在这里使用的方法生成的序列并不是没有规律的, 只不过这个轨律很难被发现就是了.
Xn+1 = (aXn + b) mod c (其中, abc通常是质数)是一种被广泛使用的最简单的随机数发生算法, 有研究表表明这个算法生成的随机数基本上符合统计规律, JAVA, BORLAND C等用的都是这个方法, 一般只要保证第一个种子是真正的随机数就行了,
下面来说一下重复的问题,
上述方法会有可能出现重复, 因为当(aXn + b)有可能是同样的数或者说余数相同的数, 因此要想不重复就得变形
偶想到的方法是
Xn=(a*n + b) mod c n是一个在1到c之间的整数, a*n + b就是一个线性公式了, 且若n不同则a*n + b也不同, 它们除上质数c得到的余数也肯定不同, 因为 若不考虑a和b而只有n的时候, 每次的结果都是n,而线性公式, 只不过移动了这条直线的位置和斜率而已, 每个结果仍然不会相同的,
为了增加不可预计性, 偶又为上面那个公式设计了, 随机数种子, 于是就变成了这个样子
F(N)=(随机数*(N+随机数))MOD 一个质数
这样就能够产生 1到选定质数之间的一个"无规律"的自然数序列了, 只要改变随机数就能改变序列的次序
在应用的时候, 要把随机数种子和最后用到的序列号保存到一个表里, 每此使用的时候取出来算好, 再把序列号更新一下就可以了
具体地说, 就是可以建一个表来保存每个序列的随机数种子, 然后再为这个序列建一个SEQUENCE就行了
然后就
SELECT MOD(序列控制表.随机数*(SEQ.NEXTVAL+序列控制表.随机数)),序列控制表.质数)
FROM 序列控制表
WHERE 序列控制表.序列ID=XX
就OK了
注意 序列控制表.质数 决定了序列的范围
http://www.ddvip.net/database/mssql/index2/81.htm /* CopyRight */
当然,我以前也见过那种类型的,就是“真随机”,大概是根据随机按键的键位和鼠标在CRT上任意的“随机”位置以及当时的系统时间(或相对间隔,一般至少毫秒级)来适应某种较复杂的算法来产生的。...其实,可以产生随机效应的自变量的确是很多的,就看你怎么用好了。
去看看系统论和混沌学吧,还有高等数学中的分形理论和物理热学中的耗散结构理论,可能会有所帮助,呵呵。
最后,倒有兴趣问问你要的随机数是做什么用呢,是个子问题吗?
㈣ 制作软件注册码算法有哪些实现步骤呢
一般都用 cpu 网卡 硬盘ID 。得到编码后,MD5加密。得到32或16位MD5编码。
例如:KDHJKSJFSJDJKDKC
然后再把编码分成4份得到的就是:KDHJ-KSJF-SJDJ-KDKC
简单吧。如果怕破解,那么可以先用别的加密方法加密后后,再用MD5加密。
㈤ 知道机器码,如何算注册码
不同的软件,通过机器码生成注册码的方法是不一样的。有些是取反,有些是累加,算法有无数种,结果就有无数种,这样才形成的加密。
(小声说)去找找网上有没有这个软件的注册码计算器吧。
要不就像CFVGood说的,你自己通过反编译等办法自己找出算法,然后也搞一个计算器出来。
㈥ 加密算法注册码
123对应ABC的话,反向计算很简单的~~~就算你不会编程,自己手动写一个编译表,然后一个一个找就可以啦~~~
当然如果你不知道他是什么算法,那么就基本无解了,因为加密算法有N种了,除非你运气好,否则一辈子算不出的~~~
一般破解的话有以下几种方式:
暴力破解---就是不断的输入密码,看运气是不是会猜到正确的~~当然可以写个程序让电脑自己自动输入~~~当然聪明点的,会先反编译一下,然后再源码中找到一些规则,以节省时间
通过反编译要破解的程序,想办法改源代码,来跳过验证的步骤~~
如果软件需要网络验证来实现注册,那么可以自己建一个假的服务器,让软件访问假的服务器来验证,只要让假的服务器,无论收到什么注册码,都反馈注册成功就OK了~~
㈦ 求一个万能算法注册机,可以根据机器码或者注册码来注册大部分软件的,好用还有追加分,急用!!!!!!!
不用求了,如果你知道这种注册码的原理的话,就应该知道这种软件绝对不可能存在的,所谓的机器码就是根据CPU、硬盘序号、主板信息、网卡MAC(有时候还包括操作系统信息)这些信息的组合(比如可能仅仅是CPU信息,也可能是CPU+主板),再加上加密软件本身的一个随机的加密因子,再用加密软件按特定的加密算法(算法本身可以在加密软件中设置)进行计算后再得出注册码。每种不同的加密软件在设置不同、算法不同、加密因子不同的情况下,对同一台机器算出的注册码也会完全不同。
㈧ 如何用一个注册码推算另一个注册码
可能性不大,注册机都是高手通用大量相匹配的注册码而推算出来的算法。
一个注册码基本无法推算出算法