Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[gui] "Save Mappings" doesn't save all of them. #2220

Closed
1 of 3 tasks
ReDJstone opened this issue Jul 22, 2024 · 2 comments
Closed
1 of 3 tasks

[gui] "Save Mappings" doesn't save all of them. #2220

ReDJstone opened this issue Jul 22, 2024 · 2 comments

Comments

@ReDJstone
Copy link

ReDJstone commented Jul 22, 2024

Issue details

When i Save Mappings, some do not save into the text file.
(No type of file works. I tried. Though I'm using recaf simple to be able to see the text easily.)

But if i do not close the app, i can Save Mappings, then Close Mappings and Open Mappings using the same file, and every single mapping is exactly as i left it.
This feels strange, because as i said, some mappings that reappear when i open the mappings file are not saved there at all!

But the real problem comes when closing the app.
The next time i open it, i try to Open Mappings and now it loads only the ones that are in the text file. The ones that are not in there, are lost.

When changing the name of some variables, i get exceptions on the console.

java.lang.NullPointerException: Cannot invoke "jadx.core.dex.instructions.args.RegisterArg.sameRegAndSVar(jadx.core.dex.instructions.args.InsnArg)" because "resultArg" is null
        at jadx.core.dex.visitors.MoveInlineVisitor.processMove(MoveInlineVisitor.java:52)
        at jadx.core.dex.visitors.MoveInlineVisitor.moveInline(MoveInlineVisitor.java:41)
        at jadx.core.dex.visitors.ConstructorVisitor.visit(ConstructorVisitor.java:35)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:26)
        at jadx.core.dex.visitors.DepthTraversal.lambda$visit$1(DepthTraversal.java:14)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:14)
        at jadx.core.ProcessClass.process(ProcessClass.java:75)
        at jadx.core.ProcessClass.generateCode(ProcessClass.java:118)
        at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388)
        at jadx.core.dex.nodes.ClassNode.reloadCode(ClassNode.java:343)
        at jadx.api.JavaClass.reload(JavaClass.java:74)
        at jadx.gui.treemodel.JClass.reload(JClass.java:81)
        at jadx.gui.ui.codearea.CodeArea.refreshClass(CodeArea.java:314)
        at jadx.gui.events.services.RenameService.refreshTabs(RenameService.java:174)
        at jadx.gui.events.services.RenameService.lambda$refreshState$1(RenameService.java:131)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
ERROR - Method generation error in method: f.B60.n4(boolean, boolean):f.y70, file: testing.jar:f/B60.class
jadx.core.utils.exceptions.JadxRuntimeException: Code variable not set in r13v0 ??
        at jadx.core.dex.instructions.args.SSAVar.getCodeVar(SSAVar.java:237)
        at jadx.core.codegen.MethodGen.addMethodArguments(MethodGen.java:223)
        at jadx.core.codegen.MethodGen.addDefinition(MethodGen.java:168)
        at jadx.core.codegen.ClassGen.addMethodCode(ClassGen.java:401)
        at jadx.core.codegen.ClassGen.addMethod(ClassGen.java:335)
        at jadx.core.codegen.ClassGen.lambda$addInnerClsAndMethods$3(ClassGen.java:301)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
        at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
        at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:557)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611)
        at jadx.core.codegen.ClassGen.addInnerClsAndMethods(ClassGen.java:297)
        at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:286)
        at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:270)
        at jadx.core.codegen.ClassGen.addClassCode(ClassGen.java:161)
        at jadx.core.codegen.ClassGen.makeClass(ClassGen.java:103)
        at jadx.core.codegen.CodeGen.wrapCodeGen(CodeGen.java:45)
        at jadx.core.codegen.CodeGen.generateJavaCode(CodeGen.java:34)
        at jadx.core.codegen.CodeGen.generate(CodeGen.java:22)
        at jadx.core.ProcessClass.process(ProcessClass.java:80)
        at jadx.core.ProcessClass.generateCode(ProcessClass.java:118)
        at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388)
        at jadx.core.dex.nodes.ClassNode.reloadCode(ClassNode.java:343)
        at jadx.api.JavaClass.reload(JavaClass.java:74)
        at jadx.gui.treemodel.JClass.reload(JClass.java:81)
        at jadx.gui.ui.codearea.CodeArea.refreshClass(CodeArea.java:314)
        at jadx.gui.events.services.RenameService.refreshTabs(RenameService.java:174)
        at jadx.gui.events.services.RenameService.lambda$refreshState$1(RenameService.java:131)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

And when i save, the variable does not get saved in the mappings file.

Jadx version

dev

Java version

22.0.2

OS

  • Windows
  • Linux
  • macOS
@ReDJstone ReDJstone added bug GUI Issues in jadx-gui module labels Jul 22, 2024
@skylot
Copy link
Owner

skylot commented Jul 22, 2024

@ReDJstone it will be very helpful if you share APK file (or link to it) and full name of node which not saving in mappings file after rename. With that info, it will be easier to reproduce this issue 🙂

@ReDJstone
Copy link
Author

Nevermind.
When i tried to save mappings it threw a lot of exceptions and saved an empty file over the mappings file that i had created. I just lost all my mappings.

(my terminal begins here.)
    r18 = 0x0;
    r0 = r18.v90;
    r0 = f.EnumC1499ia.lp;
    r0 = r0.length;
    r22 = 0x0;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:138:0x0a54, code lost:

    if (r22 >= r0) goto L189;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:140:0x0a61, code lost:

    if (r0.ZG0(r0[r22]) < 0x64) goto L191;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:141:0x0a64, code lost:

    r18 = r18 + 0x1;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:143:0x0a67, code lost:

    r22 = r22 + 0x1;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:147:0x0a6f, code lost:

    if (r18 < 0x5) goto L178;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:148:0x0a72, code lost:

    r18 = r17.lI0;
    r19 = "label-stats-small";
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:149:0x0a83, code lost:

    if ("label-stats-small".equals(r18.V90) == false) goto L181;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:150:0x0aa0, code lost:

    r0 = r18;
    r0.No(r19);
    r0.aK();
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:151:0x0aa9, code lost:

    Su0();
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:152:0x0aad, code lost:

    return;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:153:0x0a89, code lost:

    r18 = r17.lI0;
    r19 = "label";
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:154:0x0a9a, code lost:

    if ("label".equals(r18.V90) == false) goto L181;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:155:0x09fa, code lost:

    r17.FV.JR.Bj0();
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:156:0x09ab, code lost:

    r17.Vf.Up(f.AbstractC2350sF.p40(r18.lb() + 0x33450));
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:158:0x0985, code lost:

    if ("label".equals(r19.V90) != false) goto L154;
 in method: f.FR.Pf0(f.Gb):void, file: testing.jar:f/FR.class
WARN  - Code restructure failed: missing block: B:72:0x0222, code lost:

    if (((r8.AY & 0x100) != 0x0) != false) goto L74;
 in method: f.FR.T9(f.ok):boolean, file: testing.jar:f/FR.class
WARN  - Removed duplicated region for block: B:29:0x00eb  in method: f.Dq.Zs0(byte, int, int, int, int, int):void, file: testing.jar:f/Dq.class
WARN  - Removed duplicated region for block: B:16:0x00e7  in method: f.Dq.Zs0(byte, int, int, int, int, int):void, file: testing.jar:f/Dq.class
ERROR - NullPointerException in pass: ConstructorVisitor in method: f.Tw0.NV():f.FL0, file: testing.jar:f/Tw0.class
java.lang.NullPointerException: null
WARN  - Code restructure failed: missing block: B:53:0x0185, code lost:

    r1 = r18 - 0x1;
    r18 = 0x7;
    r22 = r10 - 0x1;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:55:0x0196, code lost:

    if (r22 < r9) goto L141;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:56:0x0199, code lost:

    r0 = r8.charAt(r22);
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:57:0x01a4, code lost:

    if (r0 < '0') goto L71;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:59:0x01ab, code lost:

    if (r0 <= '9') goto L79;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:60:0x01ca, code lost:

    r24 = true;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:62:0x01d5, code lost:

    if (r24 == false) goto L92;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:64:0x01db, code lost:

    if (r18 <= r1) goto L143;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:65:0x01de, code lost:

    r12 = r12 | ((java.lang.Character.digit(r0, 0x10) & org.lwjgl.system.windows.User32.UNICODE_NOCHAR) << (r21 << 0x2));
    r0 = r21 + 0x1;
    r21 = r0;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:66:0x01fb, code lost:

    if (r0 > 0x4) goto L144;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:69:0x020a, code lost:

    throw new java.lang.IllegalArgumentException("Address parts must contain no more than 16 bits (4 hex digits)");
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:71:0x0276, code lost:

    r22 = r22 - 0x1;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:74:0x0214, code lost:

    throw new java.lang.IllegalArgumentException("Too many parts. Expected 8 parts");
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:76:0x0219, code lost:

    if (r0 != ':') goto L142;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:78:0x021f, code lost:

    if (r18 >= 0x4) goto L97;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:79:0x0222, code lost:

    r14 = r14 | (r12 << (0x30 - (r18 << 0x4)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:81:0x0251, code lost:

    if (r8.charAt(r22 - 0x1) == ':') goto L140;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:82:0x0254, code lost:

    r21 = 0x0;
    r20 = r20 + 0x1;
    r18 = r18 - 0x1;
    r12 = 0x0;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:86:0x0297, code lost:

    throw new java.lang.IllegalArgumentException(java.lang.String.format("Error at index %d - unexpected colon", java.lang.Integer.valueOf(r22)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:87:0x0235, code lost:

    r16 = r16 | (r12 << (0x30 - ((r18 - 0x4) << 0x4)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:90:0x02bc, code lost:

    throw new java.lang.IllegalArgumentException(java.lang.String.format("Illegal character: %c at index %d", java.lang.Character.valueOf(r0), java.lang.Integer.valueOf(r22)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:92:0x01b2, code lost:

    if (r0 < 'a') goto L75;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:94:0x01b9, code lost:

    if (r0 <= 'f') goto L79;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:96:0x01c0, code lost:

    if (r0 < 'A') goto L80;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:98:0x01c7, code lost:

    if (r0 > 'F') goto L80;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:99:0x01d0, code lost:

    r24 = false;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:102:0x02c0, code lost:

    if (r18 >= 0x4) goto L109;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:103:0x02c3, code lost:

    r14 = r14 | (r12 << (0x30 - (r18 << 0x4)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:105:0x02ec, code lost:

    if (r20 > 0x8) goto L122;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:107:0x02f3, code lost:

    if (r20 >= 0x8) goto L116;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:109:0x02f9, code lost:

    if (r9 == r0) goto L122;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:111:0x02fd, code lost:

    if (r11 != null) goto L119;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:112:0x0300, code lost:

    r8 = r0;
    r0 = new f.C1105e60(r14, r16);
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:114:0x031d, code lost:

    return r8;
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:115:0x030f, code lost:

    r8 = r0;
    r0 = new f.C0338Lj0(r11, r14, r16);
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:117:0x0339, code lost:

    throw new java.lang.IllegalArgumentException(java.lang.String.format("Invalid number of parts. Expected 8, got %d", java.lang.Integer.valueOf(r20)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
WARN  - Code restructure failed: missing block: B:118:0x02d6, code lost:

    r16 = r16 | (r12 << (0x30 - ((r18 - 0x4) << 0x4)));
 in method: f.e60.static(java.lang.String):f.e60, file: testing.jar:f/e60.class
ERROR - NullPointerException in pass: ConstructorVisitor in method: f.fT.kw():void, file: testing.jar:f/fT.class
java.lang.NullPointerException: null
ERROR - Method code generation error in method: f.fT.kw():void, file: testing.jar:f/fT.class
java.lang.NullPointerException: Cannot invoke "jadx.core.dex.nodes.IContainer.get(jadx.api.plugins.input.data.attributes.IJadxAttrType)" because "cont" is null
        at jadx.core.codegen.RegionGen.declareVars(RegionGen.java:70)
        at jadx.core.codegen.RegionGen.makeRegion(RegionGen.java:65)
        at jadx.core.codegen.MethodGen.addRegionInsns(MethodGen.java:297)
        at jadx.core.codegen.MethodGen.addInstructions(MethodGen.java:281)
        at jadx.core.codegen.ClassGen.addMethodCode(ClassGen.java:406)
        at jadx.core.codegen.ClassGen.addMethod(ClassGen.java:335)
        at jadx.core.codegen.ClassGen.lambda$addInnerClsAndMethods$3(ClassGen.java:301)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
        at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
        at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:557)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611)
        at jadx.core.codegen.ClassGen.addInnerClsAndMethods(ClassGen.java:297)
        at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:286)
        at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:270)
        at jadx.core.codegen.ClassGen.addClassCode(ClassGen.java:161)
        at jadx.core.codegen.ClassGen.makeClass(ClassGen.java:103)
        at jadx.core.codegen.CodeGen.wrapCodeGen(CodeGen.java:45)
        at jadx.core.codegen.CodeGen.generateJavaCode(CodeGen.java:34)
        at jadx.core.codegen.CodeGen.generate(CodeGen.java:22)
        at jadx.core.ProcessClass.process(ProcessClass.java:80)
        at jadx.core.ProcessClass.generateCode(ProcessClass.java:118)
        at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:309)
        at jadx.api.JavaClass.load(JavaClass.java:132)
        at jadx.api.JavaClass.getMethods(JavaClass.java:313)
        at jadx.gui.utils.JNodeCache.removeWholeClass(JNodeCache.java:53)
        at jadx.gui.treemodel.JClass.unload(JClass.java:88)
        at jadx.gui.events.services.RenameService.refreshClasses(RenameService.java:160)
        at jadx.gui.events.services.RenameService.lambda$refreshState$2(RenameService.java:132)
        at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166)
        at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1570)
WARN  - Code restructure failed: missing block: B:15:0x00a0, code lost:

    if ("partyslot-shiny".equals(r14.V90) != false) goto L23;
 in method: f.IY.Cc():void, file: testing.jar:f/IY.class
WARN  - Code restructure failed: missing block: B:16:0x00c3, code lost:

    r0 = r14;
    r0.No(r15);
    r0.aK();
 in method: f.IY.Cc():void, file: testing.jar:f/IY.class
WARN  - Code restructure failed: missing block: B:17:0x00ce, code lost:

    r9.zx[r11][r12].V10(r0.dF0(r0.i60.iz(), r0.i60.iH(), r0.SX())[0]);
    r9.zx[r11][r12].So0(r0);
    r1 = r9.zx[r11][r12];
    r1.Cf = f.P60.rt(r0, false, true, false);
    r1.db0();
    r9.zx[r11][r12].CH0 = 0x64;
 in method: f.IY.Cc():void, file: testing.jar:f/IY.class
WARN  - Code restructure failed: missing block: B:21:0x00bd, code lost:

    if ("partyslot".equals(r14.V90) != false) goto L23;
 in method: f.IY.Cc():void, file: testing.jar:f/IY.class
ERROR - JadxRuntimeException in pass: SSATransform in method: f.e80.eM():boolean, file: testing.jar:f/e80.class
jadx.core.utils.exceptions.JadxRuntimeException: PHI empty after try-catch fix!
        at jadx.core.dex.visitors.ssa.SSATransform.fixPhiInTryCatch(SSATransform.java:228)
        at jadx.core.dex.visitors.ssa.SSATransform.fixLastAssignInTry(SSATransform.java:208)
        at jadx.core.dex.visitors.ssa.SSATransform.process(SSATransform.java:64)
        at jadx.core.dex.visitors.ssa.SSATransform.visit(SSATransform.java:44)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:26)
        at jadx.core.dex.visitors.DepthTraversal.lambda$visit$1(DepthTraversal.java:14)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:14)
        at jadx.core.ProcessClass.process(ProcessClass.java:75)
        at jadx.core.ProcessClass.generateCode(ProcessClass.java:110)
        at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:309)
        at jadx.api.JavaClass.load(JavaClass.java:132)
        at jadx.api.JavaClass.getMethods(JavaClass.java:313)
        at jadx.gui.utils.JNodeCache.removeWholeClass(JNodeCache.java:53)
        at jadx.gui.treemodel.JClass.unload(JClass.java:88)
        at jadx.gui.events.services.RenameService.refreshClasses(RenameService.java:160)
        at jadx.gui.events.services.RenameService.lambda$refreshState$2(RenameService.java:132)
        at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166)
        at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1570)
WARN  - Removed duplicated region for block: B:29:0x02cd  in method: f.lM.<init>(byte, byte, f.rg0, f.HX):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:29:0x02cd  in method: f.lM.<init>(byte, byte, f.rg0, f.HX):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:29:0x02cd  in method: f.lM.<init>(byte, byte, f.rg0, f.HX):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:109:0x0608  in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:103:0x05ca  in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:150:0x08a9  in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:145:0x086a  in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Removed duplicated region for block: B:11:0x0029  in method: f.lM.Gf():void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:25:0x00c4, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L70;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:26:0x021b, code lost:

    r14 = 0x28;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:28:0x0189, code lost:

    r14 = 0x3c;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:46:0x0123, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L70;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:64:0x0186, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L70;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:167:0x01d2, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L85;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:168:0x0211, code lost:

    r12 = 0x1e;
    r14 = 0x41;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:173:0x020e, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L85;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:187:0x0287, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L117;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:188:0x02de, code lost:

    r12 = 0x46;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:190:0x02d8, code lost:

    r12 = 0xffffffffffffffec;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
WARN  - Code restructure failed: missing block: B:202:0x02d5, code lost:

    if (f.AbstractC1704l50.VR() != false) goto L117;
 in method: f.lM.ig0(int, int, int, int, boolean):void, file: testing.jar:f/lM.class
ERROR - NullPointerException in pass: ConstructorVisitor in method: f.B70.Bn0(f.rg0):void, file: testing.jar:f/B70.class
java.lang.NullPointerException: null
WARN  - Removed duplicated region for block: B:18:0x00ce  in method: f.kY.Uc0():void, file: testing.jar:f/kY.class
WARN  - Removed duplicated region for block: B:157:0x06ee  in method: f.kY.Uc0():void, file: testing.jar:f/kY.class
WARN  - Removed duplicated region for block: B:160:0x06fe  in method: f.kY.Uc0():void, file: testing.jar:f/kY.class
WARN  - Removed duplicated region for block: B:180:? A[RETURN, SYNTHETIC] in method: f.kY.Uc0():void, file: testing.jar:f/kY.class
WARN  - Removed duplicated region for block: B:164:0x0787  in method: f.kY.Uc0():void, file: testing.jar:f/kY.class
WARN  - Code restructure failed: missing block: B:16:0x0052, code lost:

    if ((r0 == null ? 0x0 : r0.yg()) != r20.vZ.Uh) goto L19;
 in method: f.kY.QB0(byte, f.Ta0, int, boolean, boolean, boolean):boolean, file: testing.jar:f/kY.class
WARN  - Code restructure failed: missing block: B:7:0x0034, code lost:

    if ((r0 == null ? 0x0 : r0.yg()) != r0.vZ.Uh) goto L10;
 in method: f.kY.xu(short[]):void, file: testing.jar:f/kY.class
WARN  - Removed duplicated region for block: B:9:0x0090  in method: f.lv.hs(short):byte, file: testing.jar:f/lv.class
WARN  - Removed duplicated region for block: B:6:0x0089  in method: f.lv.hs(short):byte, file: testing.jar:f/lv.class
WARN  - Removed duplicated region for block: B:71:0x0308 A[SYNTHETIC] in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Removed duplicated region for block: B:59:0x029a  in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:6:0x0022, code lost:

    if (r1.evaluate(r15) != false) goto L14;
 in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:7:0x0028, code lost:

    r0 = r15.oV;
    r15 = r0;
 in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:8:0x002e, code lost:

    if (r0 == 0) goto L209;
 in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:10:0x0038, code lost:

    if (r1.evaluate(r15) == false) goto L210;
 in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:14:0x003b, code lost:

    r0 = true;
 in method: f.Qm.u(f.LpT8):void, file: testing.jar:f/Qm.class
WARN  - Code restructure failed: missing block: B:66:0x0209, code lost:

    if (r1 == 0x1e) goto L84;
 in method: f.zj.op(f.this, int, boolean):boolean, file: testing.jar:f/zj.class
ERROR - JadxRuntimeException in pass: ConstructorVisitor in method: f.FD0.Ub0():void, file: testing.jar:f/FD0.class
jadx.core.utils.exceptions.JadxRuntimeException: Can't remove SSA var: r1v5 ??, still in use, count: 1, list:
  (r1v5 ?? I:f.nh) from 0x0093: INVOKE (r1v5 ?? I:f.nh), (r2v8 ?? I:java.lang.String) VIRTUAL call: f.nh.No(java.lang.String):void A[MD:(java.lang.String):void (m)]
        at jadx.core.utils.InsnRemover.removeSsaVar(InsnRemover.java:151)
        at jadx.core.utils.InsnRemover.unbindResult(InsnRemover.java:116)
        at jadx.core.utils.InsnRemover.lambda$unbindInsns$1(InsnRemover.java:88)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at jadx.core.utils.InsnRemover.unbindInsns(InsnRemover.java:87)
        at jadx.core.utils.InsnRemover.perform(InsnRemover.java:72)
        at jadx.core.dex.visitors.ConstructorVisitor.replaceInvoke(ConstructorVisitor.java:54)
        at jadx.core.dex.visitors.ConstructorVisitor.visit(ConstructorVisitor.java:34)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:26)
        at jadx.core.dex.visitors.DepthTraversal.lambda$visit$1(DepthTraversal.java:14)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:14)
        at jadx.core.ProcessClass.process(ProcessClass.java:75)
        at jadx.core.ProcessClass.generateCode(ProcessClass.java:110)
        at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388)
        at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:309)
        at jadx.api.JavaClass.load(JavaClass.java:132)
        at jadx.api.JavaClass.getMethods(JavaClass.java:313)
        at jadx.gui.utils.JNodeCache.removeWholeClass(JNodeCache.java:53)
        at jadx.gui.treemodel.JClass.unload(JClass.java:88)
        at jadx.gui.events.services.RenameService.refreshClasses(RenameService.java:160)
        at jadx.gui.events.services.RenameService.lambda$refreshState$2(RenameService.java:132)
        at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166)
        at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1570)
WARN  - Removed duplicated region for block: B:47:0x010b  in method: f.fH0.lv0():void, file: testing.jar:f/fH0.class
WARN  - Illegal instructions before constructor call in method: f.Rt.<init>(f.SV, f.fb, int, byte, f.vf0, f.UW, f.w1, f.Zs[], f.CX[], byte, boolean, f.Lf[], f.mS[][]):void, file: testing.jar:f/Rt.class
WARN  - Removed duplicated region for block: B:54:? A[RETURN, SYNTHETIC] in method: f.Xa0.tx0(int, int):void, file: testing.jar:f/Xa0.class
WARN  - Removed duplicated region for block: B:51:0x04a2  in method: f.Xa0.tx0(int, int):void, file: testing.jar:f/Xa0.class
WARN  - Removed duplicated region for block: B:53:0x0191 A[ORIG_RETURN, RETURN] in method: f.td.I8():byte, file: testing.jar:f/td.class
WARN  - Removed duplicated region for block: B:52:0x018d A[RETURN, SYNTHETIC] in method: f.td.I8():byte, file: testing.jar:f/td.class
WARN  - Local variable not present in bytecode, skipping: f.B60.yj(Z)Lf/vK0;#j
ERROR - Exception was thrown
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.Map$Entry.getValue()" is null
        at jadx.plugins.mappings.save.MappingExporter.exportMappings(MappingExporter.java:238)
        at jadx.gui.plugins.mappings.RenameMappingsGui.lambda$saveInBackground$11(RenameMappingsGui.java:247)
        at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166)
        at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1570)

I can't upload the file, it allows 25MB max.
And i don't really care either way anymore.

Any file that's been obfuscated with ProGuard will probably start throwing exceptions the same way if you start making mappings for it.

I'm not going to do that anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants