Reverse/bfcrackme20/unsolved.md
Chenx221 10d72c53f9
unsolved...
整不来,打扰了
2024-10-01 16:12:49 +08:00

110 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

打包工具: ASPack(2.000)
1. 老方法脱壳
2. MethCallEngine
P-Code
3. 看起来有两关计算serial
```vb
loc_40512A: var_98 = 112 'Variant
loc_405133: var_A8 = 1564 'Variant
loc_40513C: var_B8 = 1464 'Variant
loc_40515A: var_17C = CVar(Len(Me.lk.Text)) 'Variant
loc_405185: If Not((Me.lk.Text = "Ab")) Then
loc_40518D: var_18C = 0 'Variant
loc_4051A9: var_19C = CVar(Me.lk.Text) 'Variant
loc_4051B0: ' Referenced from: 405246
loc_4051C3: If CBool(Not (var_19C = vbNullString)) Then
loc_4051D2: var_18C = (var_18C + 1) 'Variant
loc_405224: var_1FC = (var_1FC + CVar(Asc(CStr(Left(Left(var_19C, CLng(var_18C)), 1))))) 'Variant
loc_405242: var_19C = Right(var_19C, CLng((var_17C - var_18C))) 'Variant
loc_405246: GoTo loc_4051B0
loc_405249: End If
loc_405252: If (var_1FC = CVar(Asc(CStr(Left(Left(var_19C, CLng(var_18C)), 1))))) Then
loc_405255: End
loc_405257: GoTo loc_40525A
loc_40525A: ' Referenced from: 405257
loc_40525A: End If
loc_405290: var_108 = (((var_98 * var_A8) Xor var_B8 - var_E8) - 10) 'Variant
loc_40529E: var_128 = (var_108 * var_1FC) 'Variant
loc_4052D4: var_148 = (CVar(Val(Me.sh.Text)) * var_108) 'Variant
loc_4052E1: If (var_148 = CVar(Val(Me.sh.Text))) Then
loc_4052E4: End
loc_4052E9: Else
loc_4052F9: If CBool(Not (var_148 < var_128)) Then
loc_40530F: var_168 = 11
loc_40532C: If CBool(Not ((var_148 + var_168) > (var_128 + 11))) Then
loc_405332: Me.Hide
loc_405345: Homo.Show var_168, var_20C
```
```c#
int result = 0; //serial
foreach (char c in name)
{
result += c;
}
string serial = result.ToString();
```
4. 没了,第二关过不去
```vb
loc_405422: var_98 = 144 'Variant
loc_40542B: var_A8 = 135 'Variant
loc_405434: var_B8 = 1234 'Variant
loc_405445: var_1AC = Me.kk.Text
loc_405458: If (var_1AC = vbNullString) Then
loc_40545B: End
loc_40545D: GoTo loc_405460
loc_405460: ' Referenced from: 40545D
loc_405460: End If
loc_405472: = .Text
loc_4054C3: var_F8 = ((var_B8 Mod var_98 Xor var_A8) + (CVar(Val(var_1AC)) * 100)) 'Variant
loc_4054E1: var_1CC = CVar(Len(Me.kk.Text)) 'Variant
loc_40550C: var_1EC = CVar(Me.kk.Text) 'Variant
loc_405513: Do 'loop at: 4055E3
loc_40551F: var_1DC = (0 + 1) 'Variant
loc_40557B: var_22C = CVar(Asc(CStr(Left(Left(CVar(Me.kk.Text), CLng(var_1DC)), 1)))) 'Variant
loc_405592: var_23C = 57
loc_4055A2: If CBool((var_22C < 48) Or (var_22C > var_23C)) Then
loc_4055B2: Me.we.Caption = "Only intergers"
loc_4055BA: Exit Sub
loc_4055BB: End If
loc_4055E3: Loop Until (Right(var_1EC, CLng((var_1CC - var_1DC))) = var_1A8) 'do at: 405513
loc_405601: Call var_1FC = CDec(CVar(Me.kk.Text))
loc_40561F: Set var_88 = MemVar_407044.sh
loc_405653: var_168 = Left(CVar(Val(blot.sh.Text)), 3) 'Variant
loc_405661: var_128 = (Right(Right(Right(var_1EC, CLng((var_1CC - var_1DC))), CLng((var_1CC - var_1DC))), CLng((var_1CC - var_1DC))) * var_168) 'Variant
loc_40567F: var_178 = ((var_F8 * var_168) - 18) 'Variant
loc_405693: If CBool(Not (var_128 < var_178)) Then
loc_4056C0: var_1A8 = 20
loc_4056DD: If CBool(Not ((CVar(Val(CStr(var_128))) + var_1A8) > (var_178 + 20))) Then
loc_4056E3: Me.Hide
loc_4056F6: Kanel.Show var_1A8, var_23C
```
这是给人算的怎么看都不像是有正确serial2的样子
```c#
string serial = result.ToString(); //上一步算出的serial
int v168 = int.Parse(serial[..3]);
int v128 = int.Parse(serial2[1..]) * v168;
int vf8 = 213 + int.Parse(serial2) * 100;
result2 = vf8 * v168 - 18;
//v128: serial2的值去掉最高位后乘以v168
//result2: 213加上serial2的值乘以100再乘以v168减去18
if (v128 == result2)
{
//Success
}
```