目前,我在学习android的破解,下面一段程序,为关键call,①、②、③为同一段程序,经过不同的工具反编译的,但怎么也对应不上,哪位大牛,帮忙看看,如果要对②进行爆破修改,应怎么改?谢谢。
①
method private static c(Ljava/lang/String;)Z
.limit stack 4
.limit locals 17
0: bipush 21
2: newarray char
4: dup
5: iconst_0
6: aconst_null
7: sastore
8: dup
9: iconst_1
10: aconst_null
11: sastore
12: dup
13: iconst_2
14: aconst_null
15: sastore
16: dup
17: iconst_3
18: aconst_null
19: sastore
20: dup
21: iconst_4
22: aconst_null
23: sastore
24: dup
25: iconst_5
26: aconst_null
27: sastore
28: dup
29: bipush 6
31: aconst_null
32: sastore
33: dup
34: bipush 7
36: aconst_null
37: sastore
38: dup
39: bipush 8
41: aconst_null
42: sastore
43: dup
44: bipush 9
46: aconst_null
47: sastore
48: dup
49: bipush 10
51: aconst_null
52: sastore
53: dup
54: bipush 11
56: aconst_null
57: sastore
58: dup
59: bipush 12
61: aconst_null
62: sastore
63: dup
64: bipush 13
66: aconst_null
67: sastore
68: dup
69: bipush 14
71: aconst_null
72: sastore
73: dup
74: bipush 15
76: aconst_null
77: sastore
78: dup
79: bipush 16
81: aconst_null
82: sastore
83: dup
84: bipush 17
86: aconst_null
87: sastore
88: dup
89: bipush 18
91: aconst_null
92: sastore
93: dup
94: bipush 19
96: aconst_null
97: sastore
98: dup
99: bipush 20
101: aconst_null
102: sastore
103: astore_1
104: bipush 10
106: newarray int
108: astore_2
109: aload_0
110: invokevirtual java/lang/String/length()I
113: bipush 8
115: if_icmplt Label141
118: aload_0
119: invokevirtual java/lang/String/length()I
122: bipush 21
124: if_icmpgt Label141
127: iconst_0
128: istore_3
Label129:
129: aload_0
130: invokevirtual java/lang/String/length()I
133: istore 4
135: iload_3
136: iload 4
138: if_icmplt Label221
Label141:
141: aload_2
142: iconst_0
143: iaload
144: iconst_5
145: if_icmpge Label215
148: aload_2
149: iconst_1
150: iaload
151: iconst_5
152: if_icmpge Label215
155: aload_2
156: iconst_2
157: iaload
158: iconst_5
159: if_icmpge Label215
162: aload_2
163: iconst_3
164: iaload
165: iconst_5
166: if_icmpge Label215
169: aload_2
170: iconst_4
171: iaload
172: iconst_5
173: if_icmpge Label215
176: aload_2
177: iconst_5
178: iaload
179: iconst_5
180: if_icmpge Label215
183: aload_2
184: bipush 6
186: iaload
187: iconst_5
188: if_icmpge Label215
191: aload_2
192: bipush 7
194: iaload
195: iconst_5
196: if_icmpge Label215
199: aload_2
200: bipush 8
202: iaload
203: iconst_5
204: if_icmpge Label215
207: aload_2
208: bipush 9
210: iaload
211: iconst_5
212: if_icmplt Label448
Label215:
215: iconst_1
216: istore 5
Label218:
218: iload 5
220: ireturn
Label221:
221: aload_0
222: iload_3
223: invokevirtual java/lang/String/charAt(I)C
226: istore 6
228: aload_1
229: iload_3
230: iload 6
232: castore
233: aload_1
234: iload_3
235: caload
236: bipush 48
238: if_icmpne Label253
241: aload_2
242: iconst_0
243: iaload
244: iconst_1
245: iadd
246: istore 7
248: aload_2
249: iconst_0
250: iload 7
252: iastore
Label253:
253: aload_1
254: iload_3
255: caload
256: bipush 49
258: if_icmpne Label273
261: aload_2
262: iconst_1
263: iaload
264: iconst_1
265: iadd
266: istore 8
268: aload_2
269: iconst_1
270: iload 8
272: iastore
Label273:
273: aload_1
274: iload_3
275: caload
276: bipush 50
278: if_icmpne Label293
281: aload_2
282: iconst_2
283: iaload
284: iconst_1
285: iadd
286: istore 9
288: aload_2
289: iconst_2
290: iload 9
292: iastore
Label293:
293: aload_1
294: iload_3
295: caload
296: bipush 51
298: if_icmpne Label313
301: aload_2
302: iconst_3
303: iaload
304: iconst_1
305: iadd
306: istore 10
308: aload_2
309: iconst_3
310: iload 10
312: iastore
Label313:
313: aload_1
314: iload_3
315: caload
316: bipush 52
318: if_icmpne Label333
321: aload_2
322: iconst_4
323: iaload
324: iconst_1
325: iadd
326: istore 11
328: aload_2
329: iconst_4
330: iload 11
332: iastore
Label333:
333: aload_1
334: iload_3
335: caload
336: bipush 53
338: if_icmpne Label353
341: aload_2
342: iconst_5
343: iaload
344: iconst_1
345: iadd
346: istore 12
348: aload_2
349: iconst_5
350: iload 12
352: iastore
Label353:
353: aload_1
354: iload_3
355: caload
356: bipush 54
358: if_icmpne Label375
361: aload_2
362: bipush 6
364: iaload
365: iconst_1
366: iadd
367: istore 13
369: aload_2
370: bipush 6
372: iload 13
374: iastore
Label375:
375: aload_1
376: iload_3
377: caload
378: bipush 55
380: if_icmpne Label397
383: aload_2
384: bipush 7
386: iaload
387: iconst_1
388: iadd
389: istore 14
391: aload_2
392: bipush 7
394: iload 14
396: iastore
Label397:
397: aload_1
398: iload_3
399: caload
400: bipush 56
402: if_icmpne Label419
405: aload_2
406: bipush 8
408: iaload
409: iconst_1
410: iadd
411: istore 15
413: aload_2
414: bipush 8
416: iload 15
418: iastore
Label419:
419: aload_1
420: iload_3
421: caload
422: bipush 57
424: if_icmpne Label441
427: aload_2
428: bipush 9
430: iaload
431: iconst_1
432: iadd
433: istore 16
435: aload_2
436: bipush 9
438: iload 16
440: iastore
Label441:
441: iload_3
442: iconst_1
443: iadd
444: istore_3
445: goto Label129
Label448:
448: iconst_0
449: istore 5
451: goto Label218
.end method
②,
.method private static c(Ljava/lang/String;)Z
.registers 11
const/4 v9, 0x2
const/16 v8, 0x8
const/4 v7, 0x1
const/4 v6, 0x0
const/4 v5, 0x5
const/16 v0, 0x15
new-array v0, v0, [C
fill-array-data v0, :array_e2
const/16 v1, 0xa
new-array v1, v1, [I
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v2
if-lt v2, v8, :cond_26
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v2
const/16 v3, 0x15
if-gt v2, v3, :cond_26
move v2, v6
:goto_20
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-lt v2, v3, :cond_56
:cond_26
aget v0, v1, v6
if-ge v0, v5, :cond_54
aget v0, v1, v7
if-ge v0, v5, :cond_54
aget v0, v1, v9
if-ge v0, v5, :cond_54
const/4 v0, 0x3
aget v0, v1, v0
if-ge v0, v5, :cond_54
const/4 v0, 0x4
aget v0, v1, v0
if-ge v0, v5, :cond_54
aget v0, v1, v5
if-ge v0, v5, :cond_54
const/4 v0, 0x6
aget v0, v1, v0
if-ge v0, v5, :cond_54
const/4 v0, 0x7
aget v0, v1, v0
if-ge v0, v5, :cond_54
aget v0, v1, v8
if-ge v0, v5, :cond_54
const/16 v0, 0x9
aget v0, v1, v0
if-lt v0, v5, :cond_de
:cond_54
move v0, v7
:goto_55
return v0
:cond_56
invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C
move-result v3
aput-char v3, v0, v2
aget-char v3, v0, v2
const/16 v4, 0x30
if-ne v3, v4, :cond_68
aget v3, v1, v6
add-int/lit8 v3, v3, 0x1
aput v3, v1, v6
:cond_68
aget-char v3, v0, v2
const/16 v4, 0x31
if-ne v3, v4, :cond_74
aget v3, v1, v7
add-int/lit8 v3, v3, 0x1
aput v3, v1, v7
:cond_74
aget-char v3, v0, v2
const/16 v4, 0x32
if-ne v3, v4, :cond_80
aget v3, v1, v9
add-int/lit8 v3, v3, 0x1
aput v3, v1, v9
:cond_80
aget-char v3, v0, v2
const/16 v4, 0x33
if-ne v3, v4, :cond_8d
const/4 v3, 0x3
aget v4, v1, v3
add-int/lit8 v4, v4, 0x1
aput v4, v1, v3
:cond_8d
aget-char v3, v0, v2
const/16 v4, 0x34
if-ne v3, v4, :cond_9a
const/4 v3, 0x4
aget v4, v1, v3
add-int/lit8 v4, v4, 0x1
aput v4, v1, v3
:cond_9a
aget-char v3, v0, v2
const/16 v4, 0x35
if-ne v3, v4, :cond_a6
aget v3, v1, v5
add-int/lit8 v3, v3, 0x1
aput v3, v1, v5
:cond_a6
aget-char v3, v0, v2
const/16 v4, 0x36
if-ne v3, v4, :cond_b3
const/4 v3, 0x6
aget v4, v1, v3
add-int/lit8 v4, v4, 0x1
aput v4, v1, v3
:cond_b3
aget-char v3, v0, v2
const/16 v4, 0x37
if-ne v3, v4, :cond_c0
const/4 v3, 0x7
aget v4, v1, v3
add-int/lit8 v4, v4, 0x1
aput v4, v1, v3
:cond_c0
aget-char v3, v0, v2
const/16 v4, 0x38
if-ne v3, v4, :cond_cc
aget v3, v1, v8
add-int/lit8 v3, v3, 0x1
aput v3, v1, v8
:cond_cc
aget-char v3, v0, v2
const/16 v4, 0x39
if-ne v3, v4, :cond_da
const/16 v3, 0x9
aget v4, v1, v3
add-int/lit8 v4, v4, 0x1
aput v4, v1, v3
:cond_da
add-int/lit8 v2, v2, 0x1
goto/16 :goto_20
:cond_de
move v0, v6
goto/16 :goto_55
nop
:array_e2
.array-data 0x2
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
0x61t 0x0t
.end array-data
.end method
③,
private static boolean c(String paramString)
{
char[] arrayOfChar = { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null };
int[] arrayOfInt = new int[10];
int m;
if ((paramString.length() >= 8) && (paramString.length() <= 21))
{
m = 0;
int n = paramString.length();
if (m < n);
}
else
{
if ((arrayOfInt[0] < 5) && (arrayOfInt[1] < 5) && (arrayOfInt[2] < 5) && (arrayOfInt[3] < 5) && (arrayOfInt[4] < 5) && (arrayOfInt[5] < 5) && (arrayOfInt[6] < 5) && (arrayOfInt[7] < 5) && (arrayOfInt[8] < 5) && (arrayOfInt[9] < 5))
break label448;
}
label448: for (int i1 = 1; ; i1 = 0)
{
return i1;
int i2 = paramString.charAt(m);
arrayOfChar[m] = i2;
if (arrayOfChar[m] == '0')
{
int i3 = arrayOfInt[0] + 1;
arrayOfInt[0] = i3;
}
if (arrayOfChar[m] == '1')
{
int i4 = arrayOfInt[1] + 1;
arrayOfInt[1] = i4;
}
if (arrayOfChar[m] == '2')
{
int i5 = arrayOfInt[2] + 1;
arrayOfInt[2] = i5;
}
if (arrayOfChar[m] == '3')
{
int i6 = arrayOfInt[3] + 1;
arrayOfInt[3] = i6;
}
if (arrayOfChar[m] == '4')
{
int i7 = arrayOfInt[4] + 1;
arrayOfInt[4] = i7;
}
if (arrayOfChar[m] == '5')
{
int i8 = arrayOfInt[5] + 1;
arrayOfInt[5] = i8;
}
if (arrayOfChar[m] == '6')
{
int i9 = arrayOfInt[6] + 1;
arrayOfInt[6] = i9;
}
if (arrayOfChar[m] == '7')
{
int i10 = arrayOfInt[7] + 1;
arrayOfInt[7] = i10;
}
if (arrayOfChar[m] == '8')
{
int i11 = arrayOfInt[8] + 1;
arrayOfInt[8] = i11;
}
if (arrayOfChar[m] == '9')
{
int i12 = arrayOfInt[9] + 1;
arrayOfInt[9] = i12;
}
m += 1;
break;
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)