您的位置:首页 > 其它

160个练手CrackMe-038

2017-12-09 02:34 288 查看

1、VB-PCODE、OD动态调试基本没用

2、VB Decompiler反编译

简化之后的伪码:

loc_40E393: For i = 0 To len(name)
loc_40E3D5:   var_94 = var_94 & CVar(Asc(name[i]))
loc_40E3EF: Next var_14C 'Variant

loc_40E3F5: ' Referenced from: 40E422
loc_40E404: If (Len(var_94) > 9) Then
loc_40E41E:   var_94 = Fix((var_94 / 3.141592654)) 'Variant
loc_40E422:   GoTo loc_40E3F5

loc_40E449: var_94 = (var_94 Xor &H30F85678 - CVar(global_76)) 'Variant
//global_76 = 55475 来自Initialize和Load

loc_40E45A: For var_170 = 1 To 10: var_12C = var_170 'Variant
loc_40E489:   If (Me.txtkey.Text = global_52(CLng(var_12C))) Then
loc_40E48C:   End If //这个循环比较无实际作用

loc_40E4DE: If ((CVar(serial) - var_94) = CVar(Len(name))) Then
loc_40E502:   MsgBox("成功")
loc_40E55B: Else
loc_40E567:   MsgBox("失败")


Serial = var_94 + len(name)

要注意的是 loc_40E449 处,被坑了很久,- 的优先级高于 ^,按照它给出的就是 :

var_94 ^ (0x30F85678 - global_76)

但实际应该是

(var_94 ^ 0x30F85678) - global_76

3、注册机

>>> Name = "123456789"
>>> s = int(''.join([str(ord(i)) for i in Name]))

>>> while len(str(s))>9:
s = int(s // 3.141592654)

>>> Serial = (s ^ 0x30F85678) - 55475 + len(Name)
>>> Serial
298615569




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CrackMe