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
相关文章推荐
- 160个练手CrackMe-002
- 160个练手CrackMe-010
- 160个练手CrackMe-037
- 160个练手CrackMe-044
- 160个练手CrackMe-003
- 160个练手CrackMe-011
- 160个练手CrackMe-023
- 160个练手CrackMe-004
- 160个练手CrackMe-012
- 160个练手CrackMe-013
- 160个练手CrackMe-031
- 160个练手CrackMe-005
- 160个练手CrackMe-014
- 160个练手CrackMe-045
- 160个练手CrackMe-006
- 160个练手CrackMe-015
- 160个练手CrackMe-026
- 160个练手CrackMe-046
- 160个练手CrackMe-007
- 160个练手CrackMe-016