java - JADX输出反编译错误: "Code decompiled incorrectly, please refer to instructions dump."

标签 java android decompiling dex

我正在尝试使用 JADX 反编译联系人重复删除器 Android 应用程序Dex-to-Java 反编译器。但是,JADX 在输出中生成以下错误:

> /* JADX WARNING: inconsistent code. */
>         /* Code decompiled incorrectly, please refer to instructions dump. */
>         public String analysis() {
>             /*
>             r24 = this;
>             r20 = 0;
>             r0 = r20;
>             r1 = r24;
>             r1.add_count = r0;
>             r0 = r24;
>             r0 = r0.delete_history;
>             r20 = r0;
>             r20.clear();
>             r20 = delete_history_count;
>             r20.clear();
>             r20 = work_to_do;
>             r20 = r20.size();
>             if (r20 <= 0) goto L_0x04e7;
>         L_0x001e:
>             r0 = r24;
>             r0 = r0.delete_history;
>             r20 = r0;
>             r20.clear();
>             r13 = 0;
>         L_0x0028:
>             r20 = work_to_do;
>             r20 = r20.size();
>             r0 = r20;
>             if (r13 >= r0) goto L_0x04e7;
>         L_0x0032:
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r21 = "0";
>             r20 = r20.equals(r21);
>             if (r20 == 0) goto L_0x0184;
>         L_0x004e:
>             r20 = "LOL";
>             r21 = "Come to your deletation";
>             android.util.Log.e(r20, r21);
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r17 = r20.split(r21);
>             r20 = 2;
>             r20 = r17[r20];
>             r21 = "\n";
>             r18 = r20.split(r21);
>             r20 = 0;
>             r8 = r18[r20];
>             r20 = 1;
>             r10 = r18[r20];
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "WWWWW";
>             r21 = r21.append(r22);
>             r0 = r21;
>             r21 = r0.append(r8);
>             r0 = r21;
>             r21 = r0.append(r10);
>             r21 = r21.toString();
>             r20.println(r21);
>             r2 = new com.tos.database.DatabaseHandler;
>             r20 = r24.getBaseContext();
>             r0 = r20;
>             r2.<init>(r0);
>             r20 = r2.get_list(r8, r10);
>             r0 = r20;
>             r1 = r24;
>             r1._id = r0;
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r20 = r20.size();
>             if (r20 <= 0) goto L_0x017d;
>         L_0x00b8:
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r21 = 0;
>             r20 = r20.get(r21);
>             r20 = (java.lang.Integer) r20;
>             r20 = r20.intValue();
>             r0 = r20;
>             r1 = r24;
>             r1.check = r0;
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "CCCCCC";
>             r21 = r21.append(r22);
>             r0 = r24;
>             r0 = r0.check;
>             r22 = r0;
>             r21 = r21.append(r22);
>             r21 = r21.toString();
>             r20.println(r21);
>             r12 = 0;
>         L_0x00ef:
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r20 = r20.size();
>             r0 = r20;
>             if (r12 >= r0) goto L_0x017d;
>         L_0x00fd:
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "CCCCCC";
>             r21 = r21.append(r22);
>             r0 = r24;
>             r0 = r0._id;
>             r22 = r0;
>             r0 = r22;
>             r22 = r0.get(r12);
>             r21 = r21.append(r22);
>             r21 = r21.toString();
>             r20.println(r21);
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r0 = r20;
>             r20 = r0.get(r12);
>             r20 = (java.lang.Integer) r20;
>             r20 = r20.intValue();
>             r0 = r24;
>             r0 = r0.check;
>             r21 = r0;
>             r0 = r20;
>             r1 = r21;
>             if (r0 == r1) goto L_0x0165;
>         L_0x013f:
>             r0 = r24;
>             r0 = r0.delete_history;
>             r21 = r0;
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r0 = r20;
>             r20 = r0.get(r12);
>             r20 = (java.lang.Integer) r20;
>             r20 = r20.intValue();
>             r20 = com.tos.contact_duplicacy.MainActivity.getAccoutName(r20);
>             r0 = r21;
>             r1 = r20;
>             r0.add(r1);
>         L_0x0162:
>             r12 = r12 + 1;
>             goto L_0x00ef;
>         L_0x0165:
>             r0 = r24;
>             r0 = r0._id;
>             r20 = r0;
>             r0 = r20;
>             r20 = r0.get(r12);
>             r20 = (java.lang.Integer) r20;
>             r20 = r20.intValue();
>             r0 = r20;
>             r0 = (long) r0;
>             r20 = r0;
>             goto L_0x0162;
>         L_0x017d:
>             r20 = "WWWWWWW";
>             r21 = "delete operation works";
>             android.util.Log.e(r20, r21);
>         L_0x0184:
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r21 = "1";
>             r20 = r20.equals(r21);
>             if (r20 == 0) goto L_0x0289;
>         L_0x01a0:
>             r20 = "LOL";
>             r21 = "Come to your edit";
>             android.util.Log.e(r20, r21);
>             r0 = r24;
>             r0 = r0.add_count;
>             r20 = r0;
>             r20 = r20 + 1;
>             r0 = r20;
>             r1 = r24;
>             r1.add_count = r0;
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r17 = r20.split(r21);
>             r20 = 2;
>             r20 = r17[r20];
>             r21 = "\n";
>             r18 = r20.split(r21);
>             r20 = 0;
>             r20 = r18[r20];
>             r9 = r20.trim();
>             r20 = 1;
>             r20 = r18[r20];
>             r21 = "//";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r8 = r20.trim();
>             r20 = "LOL";
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "Come to your edit";
>             r21 = r21.append(r22);
>             r0 = r21;
>             r21 = r0.append(r9);
>             r22 = "  ";
>             r21 = r21.append(r22);
>             r0 = r21;
>             r21 = r0.append(r8);
>             r21 = r21.toString();
>             android.util.Log.e(r20, r21);
>             r5 = new java.util.ArrayList;
>             r5.<init>();
>             r20 = 2;
>             r20 = r18[r20];
>             r21 = "\\n";
>             r3 = r20.split(r21);
>             r14 = 2;
>         L_0x021f:
>             r0 = r18;
>             r0 = r0.length;
>             r20 = r0;
>             r0 = r20;
>             if (r14 >= r0) goto L_0x0255;
>         L_0x0228:
>             r20 = r18[r14];
>             r21 = "//";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r20 = r20.trim();
>             r0 = r20;
>             r5.add(r0);
>             r20 = "Delete";
>             r21 = r18[r14];
>             r22 = "//";
>             r21 = r21.split(r22);
>             r22 = 0;
>             r21 = r21[r22];
>             r21 = r21.trim();
>             android.util.Log.e(r20, r21);
>             r14 = r14 + 1;
>             goto L_0x021f;
>         L_0x0255:
>             r12 = 0;
>         L_0x0256:
>             r20 = r5.size();
>             r0 = r20;
>             if (r12 >= r0) goto L_0x0289;
>         L_0x025e:
>             r0 = r24;
>             r0 = r0.delete_history;
>             r21 = r0;
>             r22 = new com.tos.database.DatabaseHandler;
>             r0 = r22;
>             r1 = r24;
>             r0.<init>(r1);
>             r20 = r5.get(r12);
>             r20 = (java.lang.String) r20;
>             r0 = r22;
>             r1 = r20;
>             r20 = r0.get_id_from_name_number(r1, r9);
>             r20 = com.tos.contact_duplicacy.MainActivity.getAccoutName(r20);
>             r0 = r21;
>             r1 = r20;
>             r0.add(r1);
>             r12 = r12 + 1;
>             goto L_0x0256;
>         L_0x0289:
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r21 = "2";
>             r20 = r20.equals(r21);
>             if (r20 == 0) goto L_0x04e3;
>         L_0x02a5:
>             r20 = "LOL";
>             r21 = "Come to your merge";
>             android.util.Log.e(r20, r21);
>             r0 = r24;
>             r0 = r0.add_count;
>             r20 = r0;
>             r20 = r20 + 1;
>             r0 = r20;
>             r1 = r24;
>             r1.add_count = r0;
>             r20 = work_to_do;
>             r0 = r20;
>             r20 = r0.get(r13);
>             r20 = (java.lang.String) r20;
>             r21 = "-";
>             r17 = r20.split(r21);
>             r20 = 2;
>             r20 = r17[r20];
>             r21 = "\n";
>             r18 = r20.split(r21);
>             r20 = 0;
>             r20 = r18[r20];
>             r8 = r20.trim();
>             r19 = "";
>             r11 = "";
>             r16 = "";
>             r7 = "";
>             r15 = new java.util.ArrayList;
>             r15.<init>();
>             r0 = r18;
>             r0 = r0.length;
>             r20 = r0;
>             r21 = 2;
>             r0 = r20;
>             r1 = r21;
>             if (r0 != r1) goto L_0x0350;
>         L_0x02f6:
>             r20 = 1;
>             r20 = r18[r20];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = 1;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r19 = r20.trim();
>             r11 = 0;
>             r16 = 0;
>             r7 = 0;
>             r20 = 1;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "CCCCC";
>             r21 = r21.append(r22);
>             r22 = 1;
>             r22 = r18[r22];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r21 = r21.toString();
>             r20.println(r21);
>         L_0x0350:
>             r0 = r18;
>             r0 = r0.length;
>             r20 = r0;
>             r21 = 3;
>             r0 = r20;
>             r1 = r21;
>             if (r0 != r1) goto L_0x03d4;
>         L_0x035d:
>             r20 = 1;
>             r20 = r18[r20];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = 1;
>             r20 = r18[r20];
>             r19 = r20.trim();
>             r20 = 2;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r11 = r20.trim();
>             r16 = 0;
>             r7 = 0;
>             r20 = 2;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "CCCCC";
>             r21 = r21.append(r22);
>             r22 = 1;
>             r22 = r18[r22];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r22 = 2;
>             r22 = r18[r22];
>             r23 = " ";
>             r22 = r22.split(r23);
>             r23 = 0;
>             r22 = r22[r23];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r21 = r21.toString();
>             r20.println(r21);
>         L_0x03d4:
>             r0 = r18;
>             r0 = r0.length;
>             r20 = r0;
>             r21 = 4;
>             r0 = r20;
>             r1 = r21;
>             if (r0 == r1) goto L_0x03ee;
>         L_0x03e1:
>             r0 = r17;
>             r0 = r0.length;
>             r20 = r0;
>             r21 = 4;
>             r0 = r20;
>             r1 = r21;
>             if (r0 <= r1) goto L_0x0484;
>         L_0x03ee:
>             r20 = 1;
>             r20 = r18[r20];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = 1;
>             r20 = r18[r20];
>             r19 = r20.trim();
>             r20 = 2;
>             r20 = r18[r20];
>             r11 = r20.trim();
>             r20 = 2;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r16 = r20.trim();
>             r7 = 0;
>             r20 = 3;
>             r20 = r18[r20];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = 3;
>             r20 = r18[r20];
>             r21 = " ";
>             r20 = r20.split(r21);
>             r21 = 0;
>             r20 = r20[r21];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r20 = java.lang.System.out;
>             r21 = new java.lang.StringBuilder;
>             r21.<init>();
>             r22 = "CCCCC";
>             r21 = r21.append(r22);
>             r22 = 1;
>             r22 = r18[r22];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r22 = 2;
>             r22 = r18[r22];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r22 = 3;
>             r22 = r18[r22];
>             r23 = " ";
>             r22 = r22.split(r23);
>             r23 = 0;
>             r22 = r22[r23];
>             r22 = r22.trim();
>             r21 = r21.append(r22);
>             r21 = r21.toString();
>             r20.println(r21);
>         L_0x0484:
>             r0 = r17;
>             r0 = r0.length;
>             r20 = r0;
>             r21 = 4;
>             r0 = r20;
>             r1 = r21;
>             if (r0 != r1) goto L_0x04b3;
>         L_0x0491:
>             r20 = 3;
>             r20 = r17[r20];
>             r21 = "\n";
>             r4 = r20.split(r21);
>             r12 = 0;
>         L_0x049c:
>             r0 = r4.length;
>             r20 = r0;
>             r20 = r20 + -1;
>             r0 = r20;
>             if (r12 >= r0) goto L_0x04b3;
>         L_0x04a5:
>             r20 = r4[r12];
>             r20 = r20.trim();
>             r0 = r20;
>             r15.add(r0);
>             r12 = r12 + 1;
>             goto L_0x049c;
>         L_0x04b3:
>             r6 = new com.tos.database.DatabaseHandler;
>             r0 = r24;
>             r6.<init>(r0);
>             r12 = 0;
>         L_0x04bb:
>             r20 = r15.size();
>             r0 = r20;
>             if (r12 >= r0) goto L_0x04e3;
>         L_0x04c3:
>             r0 = r24;
>             r0 = r0.delete_history;
>             r21 = r0;
>             r20 = r15.get(r12);
>             r20 = (java.lang.String) r20;
>             r0 = r20;
>             r20 = r6.get_id_from_name_number(r8, r0);
>             r20 = com.tos.contact_duplicacy.MainActivity.getAccoutName(r20);
>             r0 = r21;
>             r1 = r20;
>             r0.add(r1);
>             r12 = r12 + 1;
>             goto L_0x04bb;
>         L_0x04e3:
>             r13 = r13 + 1;
>             goto L_0x0028;
>         L_0x04e7:
>             r20 = 0;
>             return r20;
>             */
>             throw new UnsupportedOperationException("Method not decompiled:
> com.tos.contact_duplicacy.ShowResult.analysis():java.lang.String");
>         }

谁能帮我理解这个错误的含义以及如何解决或更正它?

最佳答案

使用 --show-bad-code 选项通过命令行运行 JADX 为我解决了这个问题。

例如jadx-gui --show-bad-code my_debug.app.apk

我之前在尝试 --show-bad-code 选项之前尝试过 dex2jar 并且也显示错误。

关于java - JADX输出反编译错误: "Code decompiled incorrectly, please refer to instructions dump.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424442/

相关文章:

delphi - 有没有反编译Delphi的程序?

android - 是否可以从 .apk 文件中获取 Android.mk 或 native 源文件?

java - 数组列表 - 索引超出范围异常

java - 重新实现paintComponent(Graphics g)

java - 在Redis中,如何根据值查询哈希数据

android - 如何将 View 内部发生的事情记录为视频? (安卓)

android - 从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志异常 - Android

c# - 在 .NET Core 中反编译匿名方法 IL

java - 在 servlet 中接受并解析上传的文件

android位图抖动