查壳发现vb语言写的,未加壳
拖入od运行找消息弹窗函数显示调用就不说了,找到关键跳nop掉
================================================================================================
寻找注册码
这里借助的软件是VB decompiler
找到关键代码
Private Sub Command1_Click() '401FF0
loc_00402092: var_58 = Text2.Text //输入的用户名
loc_004020CA: var_44 = var_58
loc_00402126: For var_24 = 1 To Len(var_44) Step 1 //循环开始
loc_00402132:
loc_00402134: If var_108 = 0 Then GoTo loc_004021D6
loc_00402169: var_58 = CStr(Mid(var_44, CLng(var_24), 1)) //逐个取出输入的字符串
loc_00402176: var_B4 = Asc(var_58) //求出ascii码
loc_004021A0: var_34 = var_34 + Asc(var_58) //加到var_34中
loc_004021CB: Next var_24
loc_004021D1: GoTo loc_00402132
loc_004021D6: 'Referenced from: 00402134
loc_00402204: var_34 = var_34 * 1234567890 //循环结束后把结果转换十进制乘1234567890
loc_0040222F: call ebx(8, 00000001h, 00000004h, var_34, var_108, var_118, Me, undef 'Ignore this '__vbaFreeVarList, %ecx = %S_edx_S, 004041A0h)
loc_00402254: call ebx(8, 00000001h, 00000009h, var_34)
loc_00402276: var_58 = Text1.Text
loc_00402298: var_64 = var_58
loc_004022CB: If (var_58 = var_34) = 0 Then GoTo loc_00402391
loc_004022D1: Beep
loc_00402308: var_B4 = "RiCHTiG !"
loc_00402327: var_A4 = " RiCHTiG !!!! .... weiter mit dem Nächsten !!!"
loc_00402374: var_54 = MsgBox(" RiCHTiG !!!! .... weiter mit dem Nächsten !!!", 48, "RiCHTiG !", 10, 10)
loc_0040238C: GoTo loc_00402446
loc_00402391: 'Referenced from: 004022CB
loc_004023C2: var_B4 = "LEiDER Falsch ! "
loc_004023E1: var_A4 = "Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! [email protected]"
loc_0040242E: var_54 = MsgBox("Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! [email protected]", 16, "LEiDER Falsch ! ", 10, 10)
loc_00402446: 'Referenced from: 0040238C
loc_00402459: GoTo loc_0040248F
loc_0040248E: Exit Sub
loc_0040248F: 'Referenced from: 00402459
loc_004024C0: GoTo loc_00esi
End Sub
发现输入后注册码不对,再来到OD
发现在__vbaVarMul(乘法)函数后面还有__vbaMidStmtVa函数看了writeup是插入字符的函数,下面有push 0x4 和push 0x9应该就是这两个地方了。把第四个和第九个字符换为”-“就是正确的注册码了