1. 03 1月, 2020 8 次提交
    • S
      core: ClassModifier: Don't skip methods with SKIP_FIRST_ARG attr · 6d4caca6
      S-trace 提交于
      Skipping those methods on class refresh leads to "M.this = r1;" like
      assigments appears in the inner class constructors.
      
      Unsure is this saint or not.
      6d4caca6
    • S
      core: Do not call addConstField() on class refresh - fix constants replacing · 15953f83
      S-trace 提交于
      There is a duplicate control in the ConstStorage.ValueStorage.add() method,
      so each constant should be added only once, and not be added on class refresh.
      
      Fixes "Replace constants" failure after renaming any node.
      15953f83
    • S
      core: MethodNode: Fix possible decompilation failure on refresh inner class · d346ed05
      S-trace 提交于
      checkInstructions() may fail with NPE:
      ERROR - NullPointerException in pass: BlockSplitter in method: com.google.common.primitives.Ints.IntArrayAsList.<init>(int[], int, int):void, dex: out.dex
      java.lang.NullPointerException: null
              at jadx.core.dex.nodes.MethodNode.checkInstructions(MethodNode.java:159)
              at jadx.core.dex.visitors.blocksmaker.BlockSplitter.visit(BlockSplitter.java:49)
              at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:31)
              at jadx.core.dex.visitors.DepthTraversal.lambda$visit$1(DepthTraversal.java:16)
              at java.util.ArrayList.forEach(ArrayList.java:1257)
              at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:16)
              at jadx.core.dex.visitors.DepthTraversal.lambda$visit$0(DepthTraversal.java:15)
              at java.util.ArrayList.forEach(ArrayList.java:1257)
              at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:15)
              at jadx.core.ProcessClass.process(ProcessClass.java:41)
              at jadx.core.ProcessClass.generateCode(ProcessClass.java:58)
              at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:292)
              at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:271)
              at jadx.core.dex.nodes.ClassNode.refresh(ClassNode.java:303)
              at jadx.api.JavaClass.refresh(JavaClass.java:61)
              at jadx.gui.treemodel.JClass.refresh(JClass.java:63)
      ...
      
      This happens because MethodNode.unloadInsnArr() call from BlockSplitter.visit() - after it instructions[] become null.
      So, try to reload method before processing its instructions array.
      d346ed05
    • S
      core: ClassNode: Check is field really static or not in loadStaticValues() · df520a11
      S-trace 提交于
      Fixes appearing of the 0/null/false initializers for instance final fields.
      df520a11
    • S
      core: ClassNode: Load recursively missing information on refresh() · f90fc1d5
      S-trace 提交于
      Fixes loss of static identifiers, comments, annotations and source file name after rename.
      f90fc1d5
    • S
      gui: Perform refresh of non-displayed classes in background thread · 797904af
      S-trace 提交于
      After renaming some classes needs to be redecompiled to reflect new state.
      Move recompilation of non-displayed classes to background thread.
      This should improve performance on weak machines.
      797904af
    • S
      gui: Improve performance of renaming · 489fbb5e
      S-trace 提交于
      Fixes multiple decompilation of classes - now each class decompiled just once.
      489fbb5e
    • S
      gui: More advanced implementation of renaming · 9dd5a9ef
      S-trace 提交于
      This implementation does not reload file after renaming, and so works faster.
      9dd5a9ef
  2. 28 12月, 2019 7 次提交
  3. 27 12月, 2019 1 次提交
  4. 24 12月, 2019 2 次提交
  5. 23 12月, 2019 1 次提交
  6. 22 12月, 2019 2 次提交
  7. 21 12月, 2019 3 次提交
  8. 20 12月, 2019 2 次提交
  9. 15 12月, 2019 1 次提交
  10. 14 12月, 2019 3 次提交
  11. 11 12月, 2019 3 次提交
    • S
      test: add NYI test for empty finally block (#789) · 7545625a
      Skylot 提交于
      7545625a
    • S
      feat(gui): support for renaming methods, classes and fields (PR #794 #791) · e3055b95
      Soul Trace 提交于
      * Add getRealFullName() to ClassNode and JavaClass and searchJavaClassByRealName() to JadxWrapper
      
      Those methods is like getFullName() and searchJavaClassByClassName(), but for class names without aliases.
      It is necessary for renaming classes/methods/fields.
      
      * core: Make getFieldNode(), getMethodNode() and getRoot() public
      
      This is necessary for renaming functionality
      
      * jadx-gui: Add Rename popup menu entry (renames classes, methods and fields)
      
      It allows user to rename classes, methods and fields.
      It updates deobfuscation map and reload file.
      This may be suboptimal, and maybe some RenameVisitor should be added.
      Deobfuscation should be enabled in order to allow this.
      e3055b95
    • S
      feat(gui): reopened tabs on file reload (PR #793 #792) · 78eed862
      Soul Trace 提交于
      * Add getRealFullName() to ClassNode and JavaClass and searchJavaClassByRealName() to JadxWrapper
      
      Those methods is like getFullName() and searchJavaClassByClassName(), but for class names without aliases.
      It is necessary for renaming classes/methods/fields.
      
      * MainWindow: Try to restore open tabs on deobfuscation toggle
      
      Restore open tabs if possible when user toggles deobfuscation mode.
      Try to scroll to the position before toggling deobfuscation mode (may be not exact cause of the comments).
      78eed862
  12. 07 12月, 2019 1 次提交
  13. 01 12月, 2019 2 次提交
  14. 25 11月, 2019 2 次提交
  15. 20 11月, 2019 2 次提交