selph
selph
Published on 2022-07-18 / 202 Visits
0
0

新160个CrackMe练习:008-Afkayas.1

算法难度:⭐

爆破难度:⭐

信息收集

运行情况:

输入用户名,序列号,点OK进行验证

image.png

查壳与脱壳:

无壳,程序由VB5.0编写

image.png

调试分析

这个程序以前做CM的时候分析过,以x86dbg+IDA进行逆向分析的,详情见参考资料[1]

这次就直接拖VBDec里用专门的VB反编译软件进行分析

这个程序有用的代码就一个OK按钮的点击事件,总共就这么几行:

image.png

很神奇一点就是,这点之前没发现,这里藏了一个文本框,我就说代码里咋三个文本框呢,这个是用来保存数据的

image.png

算法分析

有几行看不懂啥意思,直接x86dbg动态跟踪看看效果,整体注释:

Private Sub OK_Click() '402310
  loc_004023D3: call var_8004 = var_C4(Me, Me, 0, 0, 0)				// 获取用户名输入
  loc_00402415: var_8008 = Len(var_C4(Me, Me, 0, 0, 0).MousePointer)		// 计算用户名长度
  loc_0040242D: var_800C = Asc(CrackMe.Text1.Text)				// 取用户名首字符的ASCII码
  loc_0040243F: call var_8010 = global_004040E0(var_8008*97531+var_800C)	// 97531*用户名长度+首字符的ASCII码,结果转换成字符串
  loc_00402458: CrackMe.RegSerial.Text = var_8010				// 设置这个文本框的值
  loc_004024DE: call var_8014 = var_C0(Me)
  loc_0040258B: If (CrackMe.Serial.Text = "AKA-" & var_C0(Me).MousePointer) + 1 Then	// 判断输入的序列号是否为AKA-拼接刚刚计算的值
  loc_004025C4:   var_8028 = MsgBox("You Get It" & vbCrLf & "KeyGen It Now", 0, var_4C, var_5C, var_6C)
  loc_004025E5: Else
  loc_0040261C:   var_8034 = MsgBox("You Get Wrong" & vbCrLf & "Try Again", 0, var_4C, var_5C, var_6C)
  loc_0040263B: End If
  loc_00402652: GoTo loc_0040269E
  loc_0040269D: Exit Sub
  loc_0040269E: ' Referenced from: 00402652
End Sub

总结

依然是很简单的一次VB逆向

参考资料


Comment