{"action":"created","issue":{"url":"https://api.github.com/repos/CalebFenton/simplify/issues/112","repository_url":"https://api.github.com/repos/CalebFenton/simplify","labels_url":"https://api.github.com/repos/CalebFenton/simplify/issues/112/labels{/name}","comments_url":"https://api.github.com/repos/CalebFenton/simplify/issues/112/comments","events_url":"https://api.github.com/repos/CalebFenton/simplify/issues/112/events","html_url":"https://github.com/CalebFenton/simplify/issues/112","id":364951607,"node_id":"MDU6SXNzdWUzNjQ5NTE2MDc=","number":112,"title":"Support for dxshield ","user":{"login":"AndnixSH","id":40742924,"node_id":"MDQ6VXNlcjQwNzQyOTI0","avatar_url":"https://avatars3.githubusercontent.com/u/40742924?v=4","gravatar_id":"","url":"https://api.github.com/users/AndnixSH","html_url":"https://github.com/AndnixSH","followers_url":"https://api.github.com/users/AndnixSH/followers","following_url":"https://api.github.com/users/AndnixSH/following{/other_user}","gists_url":"https://api.github.com/users/AndnixSH/gists{/gist_id}","starred_url":"https://api.github.com/users/AndnixSH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndnixSH/subscriptions","organizations_url":"https://api.github.com/users/AndnixSH/orgs","repos_url":"https://api.github.com/users/AndnixSH/repos","events_url":"https://api.github.com/users/AndnixSH/events{/privacy}","received_events_url":"https://api.github.com/users/AndnixSH/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-09-28T16:05:51Z","updated_at":"2018-10-03T19:14:54Z","closed_at":null,"author_association":"NONE","body":"Simplify fails to deobfuscate obfuscated dex by dxsheld.\r\n\r\nAPK file: https://usersdownload.com/bl3pz6b8qmbp.html\r\n\r\n```\r\n[1 / 4474] Processing top level class Lcom/google/android/gms/nearby/messages/zze;\r\n[2 / 4474] Processing top level class Lcom/google/android/gms/games/internal/zzg;\r\n(1 / 9) Executing top level method: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;\r\n17:50:50.267 WARN  InvokeOp     - Method had possible execution path which throws an exception but cannot instantiate it because the value is unknown. Exception item: type=Ljava/lang/UnsupportedOperationException;, value=*unknown*\r\nSimplifying: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;\r\nOptimizations:\r\n        constantized ifs = 0\r\n        constantized ops = 0\r\n        dead assignments removed = 0\r\n        dead ops removed = 2\r\n        dead results removed = 0\r\n        nops removed = 0\r\n        peephole optmizations = 0\r\n        unreflected fields = 0\r\n        unreflected methods = 0\r\n        useless gotos removed = 0\r\n(2 / 9) Executing top level method: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/games/internal/zzp;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;\r\n17:50:50.346 WARN  InvokeOp     - Method had possible execution path which throws an exception but cannot instantiate it because the value is unknown. Exception item: type=Ljava/lang/UnsupportedOperationException;, value=*unknown*\r\nSimplifying: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/games/internal/zzp;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;\r\nOptimizations:\r\n        constantized ifs = 0\r\n        constantized ops = 0\r\n        dead assignments removed = 0\r\n        dead ops removed = 2\r\n        dead results removed = 0\r\n        nops removed = 0\r\n        peephole optmizations = 0\r\n        unreflected fields = 0\r\n        unreflected methods = 0\r\n        useless gotos removed = 0\r\n(3 / 9) Executing top level method: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;Lcom/google/android/gms/games/internal/zzo;)Lcom/google/android/gms/tasks/Task;\r\n17:50:50.393 WARN  InvokeOp     - Method had possible execution path which throws an exception but cannot instantiate it because the value is unknown. Exception item: type=Ljava/lang/UnsupportedOperationException;, value=*unknown*\r\nSimplifying: Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;Lcom/google/android/gms/games/internal/zzo;)Lcom/google/android/gms/tasks/Task;\r\nOptimizations:\r\n        constantized ifs = 0\r\n        constantized ops = 0\r\n        dead assignments removed = 0\r\n        dead ops removed = 2\r\n        dead results removed = 0\r\n        nops removed = 0\r\n        peephole optmizations = 0\r\n        unreflected fields = 0\r\n        unreflected methods = 0\r\n        useless gotos removed = 0\r\n(4 / 9) Executing top level method: Lcom/google/android/gms/games/internal/zzg;->zzah(Lcom/google/android/gms/common/api/Status;)Lcom/google/android/gms/common/api/Status;\r\nSimplifying: Lcom/google/android/gms/games/internal/zzg;->zzah(Lcom/google/android/gms/common/api/Status;)Lcom/google/android/gms/common/api/Status;\r\nOptimizations:\r\n        constantized ifs = 0\r\n        constantized ops = 0\r\n        dead assignments removed = 0\r\n        dead ops removed = 0\r\n        dead results removed = 0\r\n        nops removed = 0\r\n        peephole optmizations = 0\r\n        unreflected fields = 0\r\n        unreflected methods = 0\r\n        useless gotos removed = 0\r\n(5 / 9) Executing top level method: Lcom/google/android/gms/games/internal/zzg;->zzb(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;\r\n17:50:51.391 WARN  InvokeOp     - Method had possible execution path which throws an exception but cannot instantiate it because the value is unknown. Exception item: type=Ljava/lang/UnsupportedOperationException;, value=*unknown*\r\nException in thread \"main\" java.lang.RuntimeException: Real exception was thrown executing ExecutionNode{signature=Lcom/google/android/gms/games/internal/zzg;->zzb(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;)Lcom/google/android/gms/tasks/Task;, op=invoke-static {r1, r2, r0}, Lcom/google/android/gms/games/internal/zzg;->zza(Lcom/google/android/gms/common/api/PendingResult;Lcom/google/android/gms/common/internal/zzbo;Lcom/google/android/gms/games/internal/zzo;)Lcom/google/android/gms/tasks/Task;, @=1} and was not handled. This could be a bug in smalivm.\r\nException: java.lang.ArrayIndexOutOfBoundsException: 0\r\n        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:88)\r\n        at org.cf.smalivm.MethodExecutor.execute(MethodExecutor.java:62)\r\n        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:103)\r\n        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:64)\r\n        at org.cf.simplify.Launcher.executeClass(Launcher.java:187)\r\n        at org.cf.simplify.Launcher.run(Launcher.java:151)\r\n        at org.cf.simplify.Main.main(Main.java:14)\r\n```"},"comment":{"url":"https://api.github.com/repos/CalebFenton/simplify/issues/comments/426763631","html_url":"https://github.com/CalebFenton/simplify/issues/112#issuecomment-426763631","issue_url":"https://api.github.com/repos/CalebFenton/simplify/issues/112","id":426763631,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNjc2MzYzMQ==","user":{"login":"CalebFenton","id":1356658,"node_id":"MDQ6VXNlcjEzNTY2NTg=","avatar_url":"https://avatars0.githubusercontent.com/u/1356658?v=4","gravatar_id":"","url":"https://api.github.com/users/CalebFenton","html_url":"https://github.com/CalebFenton","followers_url":"https://api.github.com/users/CalebFenton/followers","following_url":"https://api.github.com/users/CalebFenton/following{/other_user}","gists_url":"https://api.github.com/users/CalebFenton/gists{/gist_id}","starred_url":"https://api.github.com/users/CalebFenton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CalebFenton/subscriptions","organizations_url":"https://api.github.com/users/CalebFenton/orgs","repos_url":"https://api.github.com/users/CalebFenton/repos","events_url":"https://api.github.com/users/CalebFenton/events{/privacy}","received_events_url":"https://api.github.com/users/CalebFenton/received_events","type":"User","site_admin":false},"created_at":"2018-10-03T19:14:54Z","updated_at":"2018-10-03T19:14:54Z","author_association":"OWNER","body":"What class / methods, specifically, are you trying to simplify within `xshield`? I picked a small class `xshield/w` and string decryption works.\r\n\r\nBefore:\r\n```java\r\npublic class w extends BroadcastReceiver {\r\n    public static final String IiiIIiiIIi = b.h(\"x\\005}\\031v\\002}Ep\\005m\\016w\\0377\\nz\\037p\\004wEJ(K.\\\\%F$W\");\r\n    public static final String iiIiIIIIiI = b.h(\"\\nw\\017k\\004p\\0177\\002w\\037|\\005mEx\\bm\\002v\\00578Z9\\\\.W4V-_\");\r\n\r\n    public w(da paramda) {}\r\n\r\n    public void onReceive(Context paramContext, Intent paramIntent) {\r\n        try {\r\n            String str1 = paramIntent.getAction();\r\n            String str2 = \"\\nw\\017k\\004p\\0177\\002w\\037|\\005mEx\\bm\\002v\\00578Z9\\\\.W4V-_\";\r\n            str2 = b.h(str2);\r\n            boolean bool = str1.equals(str2);\r\n            if (bool) {\r\n                str1 = \"\\\\8M*['P8Q.]F4\";\r\n                str1 = b.h(str1);\r\n                da.q(str1);\r\n                return;\r\n            }\r\n            str1 = paramIntent.getAction();\r\n            str2 = \"x\\005}\\031v\\002}Ep\\005m\\016w\\0377\\nz\\037p\\004wEJ(K.\\\\%F$W\";\r\n            str2 = b.h(str2);\r\n            bool = str1.equals(str2);\r\n            if (bool) {\r\n                str1 = \"\\\\8M*['P8Q.]@2\";\r\n                str1 = b.h(str1);\r\n                da.q(str1);\r\n                return;\r\n            }\r\n        } finally {\r\n            ((Throwable) localObject).printStackTrace();\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nAfter:\r\n```java\r\npublic class w\r\n  extends BroadcastReceiver\r\n{\r\n  public static final String IiiIIiiIIi = \"android.intent.action.SCREEN_ON\";\r\n  public static final String iiIiIIIIiI = \"android.intent.action.SCREEN_OFF\";\r\n  \r\n  public w(da paramda) {}\r\n  \r\n  public void onReceive(Context paramContext, Intent paramIntent)\r\n  {\r\n    String str1 = paramIntent.getAction();\r\n    String str2 = \"android.intent.action.SCREEN_OFF\";\r\n    boolean bool = str1.equals(str2);\r\n    if (bool)\r\n    {\r\n      da.q(\"ESTABLISHED--\");\r\n      return;\r\n    }\r\n    str1 = paramIntent.getAction();\r\n    str2 = \"android.intent.action.SCREEN_ON\";\r\n    bool = str1.equals(str2);\r\n    if (bool)\r\n    {\r\n      da.q(\"ESTABLISHED++\");\r\n      return;\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nSo whatever the problem is, it's not in the decryption routine, which looks really simple anyway. Not saying there's no bug, just trying to figure out which one you're experiencing (other than the one in `com/google/android/gms/games/internal` which I don't want to prioritize since it should never be simplified)"}}
{"actor":{"display_login":"CalebFenton"}}