{"action":"created","issue":{"url":"https://api.github.com/repos/JesusFreke/smali/issues/596","repository_url":"https://api.github.com/repos/JesusFreke/smali","labels_url":"https://api.github.com/repos/JesusFreke/smali/issues/596/labels{/name}","comments_url":"https://api.github.com/repos/JesusFreke/smali/issues/596/comments","events_url":"https://api.github.com/repos/JesusFreke/smali/issues/596/events","html_url":"https://github.com/JesusFreke/smali/issues/596","id":302831773,"number":596,"title":"Samsung Oreo core-oj.jar issue","user":{"login":"BlackMesa123","id":13062958,"avatar_url":"https://avatars0.githubusercontent.com/u/13062958?v=4","gravatar_id":"","url":"https://api.github.com/users/BlackMesa123","html_url":"https://github.com/BlackMesa123","followers_url":"https://api.github.com/users/BlackMesa123/followers","following_url":"https://api.github.com/users/BlackMesa123/following{/other_user}","gists_url":"https://api.github.com/users/BlackMesa123/gists{/gist_id}","starred_url":"https://api.github.com/users/BlackMesa123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BlackMesa123/subscriptions","organizations_url":"https://api.github.com/users/BlackMesa123/orgs","repos_url":"https://api.github.com/users/BlackMesa123/repos","events_url":"https://api.github.com/users/BlackMesa123/events{/privacy}","received_events_url":"https://api.github.com/users/BlackMesa123/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2018-03-06T19:21:34Z","updated_at":"2018-03-06T19:56:09Z","closed_at":null,"author_association":"NONE","body":"Seems like latest baksmali can't decode 1 line in java/lang/invoke/MethodHandle class and it replaces the invoke with \"nop\", this causes bootloop issue in Samsung Oreo, hope someone can help me.\r\nHere's the faulty method:\r\n\r\n> .method public varargs invokeWithArguments([Ljava/lang/Object;)Ljava/lang/Object;\r\n>     .locals 3\r\n>     .annotation system Ldalvik/annotation/Throws;\r\n>         value = {\r\n>             Ljava/lang/Throwable;\r\n>         }\r\n>     .end annotation\r\n> \r\n>     const/4 v0, 0x0\r\n> \r\n>     monitor-enter p0\r\n> \r\n>     :try_start_0\r\n>     iget-object v1, p0, Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle;\r\n> \r\n>     if-nez v1, :cond_0\r\n> \r\n>     invoke-virtual {p0}, Ljava/lang/invoke/MethodHandle;->type()Ljava/lang/invoke/MethodType;\r\n> \r\n>     move-result-object v1\r\n> \r\n>     const/4 v2, 0x0\r\n> \r\n>     invoke-static {v1, v2}, Ljava/lang/invoke/MethodHandles;->spreadInvoker(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;\r\n> \r\n>     move-result-object v1\r\n> \r\n>     iput-object v1, p0, Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle;\r\n> \r\n>     :cond_0\r\n>     iget-object v0, p0, Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle;\r\n>     :try_end_0\r\n>     .catchall {:try_start_0 .. :try_end_0} :catchall_0\r\n> \r\n>     monitor-exit p0\r\n> \r\n>     #disallowed odex opcode\r\n>     #invoke-super-quick {v0, p0, p1}, vtable@3970\r\n>     nop\r\n> \r\n>     and-int/2addr p0, v0\r\n> \r\n>     move-result-object v1\r\n> \r\n>     return-object v1\r\n> \r\n>     :catchall_0\r\n>     move-exception v1\r\n> \r\n>     monitor-exit p0\r\n> \r\n>     throw v1\r\n> .end method"},"comment":{"url":"https://api.github.com/repos/JesusFreke/smali/issues/comments/370907623","html_url":"https://github.com/JesusFreke/smali/issues/596#issuecomment-370907623","issue_url":"https://api.github.com/repos/JesusFreke/smali/issues/596","id":370907623,"user":{"login":"BlackMesa123","id":13062958,"avatar_url":"https://avatars0.githubusercontent.com/u/13062958?v=4","gravatar_id":"","url":"https://api.github.com/users/BlackMesa123","html_url":"https://github.com/BlackMesa123","followers_url":"https://api.github.com/users/BlackMesa123/followers","following_url":"https://api.github.com/users/BlackMesa123/following{/other_user}","gists_url":"https://api.github.com/users/BlackMesa123/gists{/gist_id}","starred_url":"https://api.github.com/users/BlackMesa123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BlackMesa123/subscriptions","organizations_url":"https://api.github.com/users/BlackMesa123/orgs","repos_url":"https://api.github.com/users/BlackMesa123/repos","events_url":"https://api.github.com/users/BlackMesa123/events{/privacy}","received_events_url":"https://api.github.com/users/BlackMesa123/received_events","type":"User","site_admin":false},"created_at":"2018-03-06T19:56:09Z","updated_at":"2018-03-06T19:56:09Z","author_association":"NONE","body":"So I managed to deodex successfully the core-oj with this cmd:\r\n> **java -jar baksmali.jar x boot.oat/core-oj.jar -a 26 --di false -l -o out --sl -d framework/arm64**\r\nNow the faulty part changed from this\r\n`    #disallowed odex opcode\r\n    #invoke-super-quick {v0, p0, p1}, vtable@3970\r\n    nop\r\n\r\n    and-int/2addr p0, v0`\r\nto this:\r\n`    #Proto index out of bounds: 12303\r\n    #invoke-polymorphic {v0, p0, p1}, Ljava/lang/invoke/MethodHandle;->invoke([Ljava/lang/Object;)Ljava/lang/Object;, method_proto@12303\r\n    nop`\r\nShould I try to assemble the dex by changing that part to this?\r\n`    invoke-super-quick {v0, p0, p1}, Ljava/lang/invoke/MethodHandle;->invoke([Ljava/lang/Object;)Ljava/lang/Object;\r\n\r\n    and-int/2addr p0, v0`\r\n"}}
{"actor":{"display_login":"BlackMesa123"}}