Sub ZhuCe(name As String, code As String)
'设计一个隐蔽算法的反调试注册过程
'可用真正注册码:
'name: maplescg
'code: 844123456
'假注册码:
'name: maplescg
'code: 14245066571
Dim Nxunhuan As Integer
Dim Yinbi As Double
Dim Zhongzhuan As String
Dim Zhang As Double
Dim Mihuo As String
On Error GoTo Yes
If Len(name) < 5 Then MsgBox "用户名长度不能小于5位", , "提示": Exit Sub
For Nxunhuan = 1 To Len(name)
Yinbi = Yinbi + Asc(Mid(name, Nxunhuan, 1))
Next Nxunhuan
'循环取用户名所有字母的ASC值之和
Zhongzhuan = Yinbi
If Len(code) <= Len((Zhongzhuan)) Then MsgBox "注册码长度不够", , "提示": Exit Sub
Zhang = Yinbi Xor Val(Left(code, Len(Zhongzhuan)))
'将上述值跟输入注册码左边开始,相同长度的数值XOR
Zhang = Log(Zhang)
'对XOR值进行LOG运算,注意LOG有个特点是什么?
'当ZHANG为零的时候会出现一个数值为5的异常
'我们这里就是利用这个特点来设计隐蔽的注册过程来
'反跟踪。
'请问,破解者跟到这里了,他怎么会知道这里必须
'产生一个异常值为5的异常才能跟到正确的注册过程,
'如果不出现5异常的话,也没什么现象可以给他分析的
'他只能继续分析下去,就像走一条大路,他根本就没发现
'必须走小路才有收获,而一直走下去,貌似正确,实际被耍了