ea5ycpp

直接查看主函数

熟悉的brainfuck语言,经过加密之后最后与v14的值比较

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
__int64 __fastcall sub_24C8(__int64 a1, __int64 a2)
{
__int64 v2; // rbx
__int64 v3; // rbx
__int64 v4; // rax
__int64 v5; // rax
__int64 v6; // rax
__int64 v7; // rax
char v9; // [rsp-175h] [rbp-17Dh] BYREF
int i; // [rsp-174h] [rbp-17Ch]
__int64 v11; // [rsp-170h] [rbp-178h]
_BYTE v12[32]; // [rsp-168h] [rbp-170h] BYREF
_BYTE v13[32]; // [rsp-148h] [rbp-150h] BYREF
_BYTE v14[248]; // [rsp-128h] [rbp-130h] BYREF
int v15; // [rsp-30h] [rbp-38h]
__int16 v16; // [rsp-2Ch] [rbp-34h]
char v17; // [rsp-2Ah] [rbp-32h]
_BYTE v18[17]; // [rsp-29h] [rbp-31h] BYREF
__int64 v19; // [rsp-18h] [rbp-20h]

v19 = v2;
*(_QWORD *)&v18[9] = __readfsqword(0x28u);
v3 = operator new(0x178uLL);
sub_37EC(v3);
v11 = v3;
memset(v14, 0, sizeof(v14));
v15 = 0;
v16 = 0;
v17 = 0;
v14[0] = 104;
v14[1] = 111;
v14[2] = 101;
v14[3] = 108;
v14[4] = -127;
v14[5] = 105;
v14[6] = 122;
v14[7] = 61;
v14[8] = 59;
v14[9] = 121;
v14[10] = 107;
v14[11] = 115;
v14[12] = 56;
v14[13] = 57;
v14[14] = 123;
v14[15] = 112;
v14[16] = 123;
v14[17] = 72;
v14[18] = 115;
v14[19] = 124;
v14[20] = -123;
v14[21] = 71;
v14[22] = 124;
v14[23] = -106;
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(v12, a2, v18);
std::operator>><char>(&std::cin, v12);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(v13, v12);
sub_38A8(v3, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
if ( std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::size(v12) == 24 )
{
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>>>>>>++[<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>>>>>+++[<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>>>>++++[<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>>>+++++[<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>>++++++[<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>>+++++++[<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>>++++++++[<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>>+++++++++[<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>>++++++++++[<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>>+++++++++++[<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>>++++++++++++[<<<<<<<<<<<<<<+>>>>>>>>>>>>>>-]<<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>>+++++++++++++[<<<<<<<<<<<<<+>>>>>>>>>>>>>-]<<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>>++++++++++++++[<<<<<<<<<<<<+>>>>>>>>>>>>-]<<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>>+++++++++++++++[<<<<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>>++++++++++++++++[<<<<<<<<<<+>>>>>>>>>>-]<<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>>+++++++++++++++++[<<<<<<<<<+>>>>>>>>>-]<<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>>++++++++++++++++++[<<<<<<<<+>>>>>>>>-]<<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>>+++++++++++++++++++[<<<<<<<+>>>>>>>-]<<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>>++++++++++++++++++++[<<<<<<+>>>>>>-]<<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>>+++++++++++++++++++++[<<<<<+>>>>>-]<<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>>++++++++++++++++++++++[<<<<+>>>>-]<<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>>+++++++++++++++++++++++[<<<+>>>-]<<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">>++++++++++++++++++++++++[<<+>>-]<",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
std::allocator<char>::allocator(&v9);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(
v13,
">+++++++++++++++++++++++++[<+>-]",
&v9);
sub_3876(v11, v13);
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v13);
std::allocator<char>::~allocator(&v9);
sub_3936(v11);
for ( i = 0; i <= 23; ++i )
{
v5 = sub_3920(v11);
if ( *(_BYTE *)(v5 + i) != v14[i] )//判断相等
{
v6 = std::operator<<<std::char_traits<char>>(&std::cout, "You are wrong");
std::ostream::operator<<(v6, &std::endl<char,std::char_traits<char>>);
goto LABEL_9;
}
}
v7 = std::operator<<<std::char_traits<char>>(&std::cout, "You are right");
std::ostream::operator<<(v7, &std::endl<char,std::char_traits<char>>);
}
else
{
v4 = std::operator<<<std::char_traits<char>>(&std::cout, "You are wrong");
std::ostream::operator<<(v4, &std::endl<char,std::char_traits<char>>);
}
LABEL_9:
std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(v12);
return 0LL;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>>>>>>>>>>>>>>>>>>>>>>>++[<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>>+++[<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>++++[<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>+++++[<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>++++++[<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>+++++++[<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>++++++++[<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>+++++++++[<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>++++++++++[<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>+++++++++++[<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<
>>>>>>>>>>>>>>++++++++++++[<<<<<<<<<<<<<<+>>>>>>>>>>>>>>-]<<<<<<<<<<<<<
>>>>>>>>>>>>>+++++++++++++[<<<<<<<<<<<<<+>>>>>>>>>>>>>-]<<<<<<<<<<<<
>>>>>>>>>>>>++++++++++++++[<<<<<<<<<<<<+>>>>>>>>>>>>-]<<<<<<<<<<<
>>>>>>>>>>>+++++++++++++++[<<<<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<
>>>>>>>>>>++++++++++++++++[<<<<<<<<<<+>>>>>>>>>>-]<<<<<<<<<
>>>>>>>>>+++++++++++++++++[<<<<<<<<<+>>>>>>>>>-]<<<<<<<<
>>>>>>>>++++++++++++++++++[<<<<<<<<+>>>>>>>>-]<<<<<<<
>>>>>>>+++++++++++++++++++[<<<<<<<+>>>>>>>-]<<<<<<
>>>>>>++++++++++++++++++++[<<<<<<+>>>>>>-]<<<<<
>>>>>+++++++++++++++++++++[<<<<<+>>>>>-]<<<<
>>>>++++++++++++++++++++++[<<<<+>>>>-]<<<
>>>+++++++++++++++++++++++[<<<+>>>-]<<
>>++++++++++++++++++++++++[<<+>>-]<
>+++++++++++++++++++++++++[<+>-]

直接运行来看到底是干什么的

1

可以知道第一个数+2,第二个+3以此类推

EXP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
v15 = 24*[0]
v15[0] = 0x68;
v15[1] = 0x6F;
v15[2] = 0x65;
v15[3] = 0x6C;
v15[4] = 0x81;
v15[5] = 0x69;
v15[6] = 0x7A;
v15[7] = 0x3D;
v15[8] = 0x3B;
v15[9] = 0x79;
v15[10] = 0x6B;
v15[11] = 0x73;
v15[12] = 0x38;
v15[13] = 0x39;
v15[14] = 0x7B;
v15[15] = 0x70;
v15[16] = 0x7B;
v15[17] = 0x48;
v15[18] = 0x73;
v15[19] = 0x7C;
v15[20] = 0x85;
v15[21] = 0x47;
v15[22] = 0x7C;
v15[23] = 0x96;

flag=''
for i in range(24):
flag += chr(v15[i] - (2+i))
print(flag)


flag{br41n_f**k_i5_go0d}

easy-math

看大佬的博客https://www.cnblogs.com/holittech/p/15335673.html

pig-brain_king

https://www.cnblogs.com/holittech/articles/15335676.html