永发信息网

根据两组注册码推算加密规则:

答案:1  悬赏:0  手机版
解决时间 2021-03-10 20:10
  • 提问者网友:战魂
  • 2021-03-10 13:50
根据两组注册码推算加密规则:
最佳答案
  • 五星知识达人网友:大漠
  • 2021-03-10 14:25
我们如今见到的大多数软件的虽然在注册算法,验证方式都各不相同自成体系。但不管怎样变化都没有脱离出一个关于注册码的定式:注册信息 + 算法计算 = 注册码 。概括地说就是如今大多数软件所采取的注册码生成的方式都是按照: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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯