尝试一下恒大的第六课
恒大的第二季第六课这次并没有给出答案,提供了一个错误的方法来让我们思考,为什么追出了真正的注册码,但无法注册。这其中的原因就是,并没有看下面的比较call。他的比较是和用户名作比较,并不是我们常见的注册码比较,所以在注册码中输入真码是不对的。在这个例子中注册码才是真正的用户名,二用户名才是真正的注册码。
下面接着恒大的教程开始分析。。
在教程中恒大已经告诉我们段首在什么地方,所以前面的我就不说了,直接在段首下断,F8单步步过。
你会发现程序会取用户名,注册码,然后比较是否为空。
然后在下面又取了一次注册码,经过运算的得出一个数字,这个数字先不管他继续F8
在这里,这个call运行了一段vb脚本代码,得出一个字串。
下面的一个call获取了一个数字,之后和上面vb脚本获取的那个字串拼接起来,得到真码
细心地你会发现,上面取注册码后运算出的那个数字就是和vb脚本获取的字串拼接的那个数字。
然后继续单步
在这里你会发现,他把假的用户名和真码压栈,然后是一个call,这应该就是关键call了。
关键call下面有什么呢,当然是关键跳了。。。这里在关键跳的上方还有一个call(这个貌似是清理数据用的)。
如果要爆破的话就是从这个地方下手,直接nop
如果获取注册码的话,就把真码输到用户名的地方就可以了
十分期待恒大的300楼的谜底。。。。。。也不知道自己分析的对不对。。。如果有什么不对的地方,还请各位大大指出。
许多地方有些文不达意,可能有些人会看不明白,望各位见谅。。。
最后我也附上一个注册机。。。。
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
分析得很仔细,蛋是有个奇葩的问题...没人会用这样的奇葩注册码来加密软件吧..... 哇靠。这个犀利了,看来要学习一下 本帖最后由 寒枫雨雪 于 2013-7-3 17:00 编辑
哦!难道是这个意思?我去试试 经过大大的分析,貌似有了一点头绪。汇编不会是硬伤啊。我去试下, 补习汇编才是硬道理 膜拜会破解的大牛 不错啊,学习了 不错啊~~~come 注册机各种都写出来了膜拜大大 好贴
楼主讲得不错!!!在下很受用