160个练手CrackMe-038

来源:互联网 发布:oracle查询第一条数据 编辑:程序博客网 时间:2024/06/07 15:56

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)>>> Serial298615569

这里写图片描述
这里写图片描述

原创粉丝点击