我正在尝试对apk文件进行反向工程。为此,我使用了jadx v 0.9.0反编译器。
问题是jadx不会反编译所有函数,这是我得到的:
private defpackage.dmw a(defpackage.dzy r3, defpackage.efb r4, defpackage.dve r5, java.lang.String r6, defpackage.dmx r7, android.content.Context r8) {
/*
r2 = this;
if (r7 == 0) goto L_0x00cf;
r0 = r7.a();
if (r0 == 0) goto L_0x0017;
r0 = r7.b();
if (r0 == 0) goto L_0x000f;
goto L_0x0017;
r3 = new java.lang.IllegalArgumentException;
r4 = "Synchronous ResponseHandler used in AsyncHttpClient. You should create your response handler in a looper thread or use SyncHttpClient instead.";
r3.<init>(r4);
throw r3;
if (r6 == 0) goto L_0x0037;
r0 = r5;
r0 = (defpackage.duz) r0;
r0 = r0.a;
if (r0 == 0) goto L_0x0032;
r0 = "Content-Type";
r0 = r5.a(r0);
if (r0 == 0) goto L_0x0032;
r6 = a;
r0 = "AsyncHttpClient";
r1 = "Passed contentType will be ignored because HttpEntity sets content type";
r6.c(r0, r1);
goto L_0x0037;
r0 = "Content-Type";
r5.b(r0, r6);
r6 = r5.e();
r7.a(r6);
r6 = r5.k();
r7.a(r6);
r6 = new dmp;
r6.<init>(r3, r4, r5, r7);
r3 = r2.i;
r3.submit(r6);
r3 = new dmw;
r3.<init>(r6);
if (r8 == 0) goto L_0x00ce;
r4 = r2.d;
monitor-enter(r4);
r5 = r2.d; Catch:{ all -> 0x00cb }
r5 = r5.get(r8); Catch:{ all -> 0x00cb }
r5 = (java.util.List) r5; Catch:{ all -> 0x00cb }
if (r5 != 0) goto L_0x0071; Catch:{ all -> 0x00cb }
r5 = new java.util.LinkedList; Catch:{ all -> 0x00cb }
r5.<init>(); Catch:{ all -> 0x00cb }
r5 = java.util.Collections.synchronizedList(r5); Catch:{ all -> 0x00cb }
r6 = r2.d; Catch:{ all -> 0x00cb }
r6.put(r8, r5); Catch:{ all -> 0x00cb }
monitor-exit(r4); Catch:{ all -> 0x00cb }
r5.add(r3);
r4 = r5.iterator();
r5 = r4.hasNext();
if (r5 == 0) goto L_0x00ce;
r5 = r4.next();
r5 = (defpackage.dmw) r5;
r6 = r5.a;
r6 = r6.get();
r6 = (defpackage.dmp) r6;
r7 = 0;
r8 = 1;
if (r6 == 0) goto L_0x009a;
r6 = r6.a();
if (r6 == 0) goto L_0x0098;
goto L_0x009a;
r6 = 0;
goto L_0x009b;
r6 = 1;
if (r6 != 0) goto L_0x00bd;
r6 = r5.a;
r6 = r6.get();
r6 = (defpackage.dmp) r6;
if (r6 == 0) goto L_0x00ba;
r0 = r6.a();
if (r0 != 0) goto L_0x00b4;
r6 = r6.a;
if (r6 == 0) goto L_0x00b2;
goto L_0x00b4;
r6 = 0;
goto L_0x00b5;
r6 = 1;
if (r6 == 0) goto L_0x00b8;
goto L_0x00ba;
r6 = 0;
goto L_0x00bb;
r6 = 1;
if (r6 == 0) goto L_0x00be;
r7 = 1;
if (r7 == 0) goto L_0x00c5;
r5 = r5.a;
r5.clear();
if (r7 == 0) goto L_0x0079;
r4.remove();
goto L_0x0079;
r3 = move-exception;
monitor-exit(r4); Catch:{ all -> 0x00cb }
throw r3;
return r3;
r3 = new java.lang.IllegalArgumentException;
r4 = "ResponseHandler must not be null";
r3.<init>(r4);
throw r3;
return;
*/
throw new UnsupportedOperationException("Method not decompiled: defpackage.dmo.a(dzy, efb, dve, java.lang.String, dmx, android.content.Context):dmw");
}
根据此issue上建议的解决方案,我必须使用--show-bad-code反编译所有内容,但这对我不起作用!
关于如何进行这项工作的任何想法?