恒大的第二季第六课这次并没有给出答案,提供了一个错误的方法来让我们思考,为什么追出了真正的注册码,但无法注册。
这其中的原因就是,并没有看下面的比较call。他的比较是和用户名作比较,并不是我们常见的注册码比较,所以在注册码中输入真码是不对的。在这个例子中注册码才是真正的用户名,二用户名才是真正的注册码。
下面接着恒大的教程开始分析。。
在教程中恒大已经告诉我们段首在什么地方,所以前面的我就不说了,直接在段首下断,F8单步步过。
你会发现程序会取用户名,注册码,然后比较是否为空。
然后在下面又取了一次注册码,经过运算的得出一个数字,这个数字先不管他继续F8
在这里,这个call运行了一段vb脚本代码,得出一个字串。
下面的一个call获取了一个数字,之后和上面vb脚本获取的那个字串拼接起来,得到真码
细心地你会发现,上面取注册码后运算出的那个数字就是和vb脚本获取的字串拼接的那个数字。
然后继续单步
在这里你会发现,他把假的用户名和真码压栈,然后是一个call,这应该就是关键call了。
关键call下面有什么呢,当然是关键跳了。。。这里在关键跳的上方还有一个call(这个貌似是清理数据用的)。
如果要爆破的话就是从这个地方下手,直接nop
如果获取注册码的话,就把真码输到用户名的地方就可以了
十分期待恒大的300楼的谜底。。。。。。也不知道自己分析的对不对。。。如果有什么不对的地方,还请各位大大指出。
许多地方有些文不达意,可能有些人会看不明白,望各位见谅。。。
最后我也附上一个注册机。。。。
[Visual Basic] 纯文本查看 复制代码 If (Text2.Text = "") Then
MsgBox "注册码不能为空"
Exit Sub
End If
Dim dm As String
Dim cpuSet, cpu
Set cpuSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Processor")
For Each cpu In cpuSet
dm = cpu.ProcessorId
Exit For
Next
dm = dm & Len(Text2) * 2
Text1 = dm
恒大的第六课.rar
(3.42 KB, 下载次数: 248)
|