├── Java2SmaliTools ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── bin │ └── cn │ │ └── wjdiankong │ │ └── java2smali │ │ ├── Java2SmaliTools.class │ │ └── Utils.class └── src │ └── cn │ └── wjdiankong │ └── java2smali │ ├── Java2SmaliTools.java │ └── Utils.java ├── README.md └── java2smali ├── classes └── cn │ └── wjdiankong │ ├── androiddemo │ └── Utils.class │ └── hookpms │ ├── PmsHookBinderInvocationHandler.class │ └── ServiceManagerWraper.class ├── java ├── PmsHookBinderInvocationHandler.java ├── ServiceManagerWraper.java └── Utils.java ├── java2smali.bat ├── java2smali.jar ├── lib ├── android.jar ├── baksmali.jar └── dx.jar └── smali └── cn └── wjdiankong ├── androiddemo └── Utils.smali └── hookpms ├── PmsHookBinderInvocationHandler.smali └── ServiceManagerWraper.smali /Java2SmaliTools/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Java2SmaliTools/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Java2SmaliTools 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Java2SmaliTools/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Java2SmaliTools/bin/cn/wjdiankong/java2smali/Java2SmaliTools.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/Java2SmaliTools/bin/cn/wjdiankong/java2smali/Java2SmaliTools.class -------------------------------------------------------------------------------- /Java2SmaliTools/bin/cn/wjdiankong/java2smali/Utils.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/Java2SmaliTools/bin/cn/wjdiankong/java2smali/Utils.class -------------------------------------------------------------------------------- /Java2SmaliTools/src/cn/wjdiankong/java2smali/Java2SmaliTools.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/Java2SmaliTools/src/cn/wjdiankong/java2smali/Java2SmaliTools.java -------------------------------------------------------------------------------- /Java2SmaliTools/src/cn/wjdiankong/java2smali/Utils.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/Java2SmaliTools/src/cn/wjdiankong/java2smali/Utils.java -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # java2smali 2 | java代码直接转化成smali代码工具 3 | -------------------------------------------------------------------------------- /java2smali/classes/cn/wjdiankong/androiddemo/Utils.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/classes/cn/wjdiankong/androiddemo/Utils.class -------------------------------------------------------------------------------- /java2smali/classes/cn/wjdiankong/hookpms/PmsHookBinderInvocationHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/classes/cn/wjdiankong/hookpms/PmsHookBinderInvocationHandler.class -------------------------------------------------------------------------------- /java2smali/classes/cn/wjdiankong/hookpms/ServiceManagerWraper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/classes/cn/wjdiankong/hookpms/ServiceManagerWraper.class -------------------------------------------------------------------------------- /java2smali/java/PmsHookBinderInvocationHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/java/PmsHookBinderInvocationHandler.java -------------------------------------------------------------------------------- /java2smali/java/ServiceManagerWraper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/java/ServiceManagerWraper.java -------------------------------------------------------------------------------- /java2smali/java/Utils.java: -------------------------------------------------------------------------------- 1 | package cn.wjdiankong.androiddemo; 2 | 3 | import java.security.MessageDigest; 4 | 5 | public class Utils { 6 | 7 | private static char[] a = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; 8 | 9 | public static String a(String str) { 10 | return a(str.getBytes()); 11 | } 12 | 13 | public static String a(byte[] bArr) { 14 | String str = null; 15 | try { 16 | MessageDigest instance = MessageDigest.getInstance("MD5"); 17 | instance.update(bArr); 18 | str = b(instance.digest()); 19 | } catch (Exception e) { 20 | e.printStackTrace(); 21 | } 22 | return str; 23 | } 24 | 25 | private static String b(byte[] bArr) { 26 | int i = 0; 27 | int length = bArr.length; 28 | char[] cArr = new char[(length * 2)]; 29 | int i2 = 0; 30 | while (i < length) { 31 | byte b = bArr[i]; 32 | int i3 = i2 + 1; 33 | cArr[i2] = a[(b >>> 4) & 15]; 34 | i2 = i3 + 1; 35 | cArr[i3] = a[b & 15]; 36 | i++; 37 | } 38 | return new String(cArr); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /java2smali/java2smali.bat: -------------------------------------------------------------------------------- 1 | cd %~dp0 2 | java -jar java2smali.jar 3 | pause.. 4 | -------------------------------------------------------------------------------- /java2smali/java2smali.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/java2smali.jar -------------------------------------------------------------------------------- /java2smali/lib/android.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/lib/android.jar -------------------------------------------------------------------------------- /java2smali/lib/baksmali.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/lib/baksmali.jar -------------------------------------------------------------------------------- /java2smali/lib/dx.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fourbrother/java2smali/da8f991cb96b572229073e163539d7bfe35c53e2/java2smali/lib/dx.jar -------------------------------------------------------------------------------- /java2smali/smali/cn/wjdiankong/androiddemo/Utils.smali: -------------------------------------------------------------------------------- 1 | .class public Lcn/wjdiankong/androiddemo/Utils; 2 | .super Ljava/lang/Object; 3 | .source "Utils.java" 4 | 5 | 6 | # static fields 7 | .field private static a:[C 8 | 9 | 10 | # direct methods 11 | .method static constructor ()V 12 | .registers 1 13 | 14 | .prologue 15 | .line 7 16 | const/16 v0, 0x10 17 | 18 | new-array v0, v0, [C 19 | 20 | fill-array-data v0, :array_a 21 | 22 | sput-object v0, Lcn/wjdiankong/androiddemo/Utils;->a:[C 23 | 24 | return-void 25 | 26 | :array_a 27 | .array-data 2 28 | 0x30s 29 | 0x31s 30 | 0x32s 31 | 0x33s 32 | 0x34s 33 | 0x35s 34 | 0x36s 35 | 0x37s 36 | 0x38s 37 | 0x39s 38 | 0x61s 39 | 0x62s 40 | 0x63s 41 | 0x64s 42 | 0x65s 43 | 0x66s 44 | .end array-data 45 | .end method 46 | 47 | .method public constructor ()V 48 | .registers 1 49 | 50 | .prologue 51 | .line 5 52 | invoke-direct {p0}, Ljava/lang/Object;->()V 53 | 54 | return-void 55 | .end method 56 | 57 | .method public static a(Ljava/lang/String;)Ljava/lang/String; 58 | .registers 2 59 | 60 | .prologue 61 | .line 10 62 | invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B 63 | 64 | move-result-object v0 65 | 66 | invoke-static {v0}, Lcn/wjdiankong/androiddemo/Utils;->a([B)Ljava/lang/String; 67 | 68 | move-result-object v0 69 | 70 | return-object v0 71 | .end method 72 | 73 | .method public static a([B)Ljava/lang/String; 74 | .registers 3 75 | 76 | .prologue 77 | .line 14 78 | const/4 v0, 0x0 79 | 80 | .line 16 81 | :try_start_1 82 | const-string v1, "MD5" 83 | 84 | invoke-static {v1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; 85 | 86 | move-result-object v1 87 | 88 | .line 17 89 | invoke-virtual {v1, p0}, Ljava/security/MessageDigest;->update([B)V 90 | 91 | .line 18 92 | invoke-virtual {v1}, Ljava/security/MessageDigest;->digest()[B 93 | 94 | move-result-object v1 95 | 96 | invoke-static {v1}, Lcn/wjdiankong/androiddemo/Utils;->b([B)Ljava/lang/String; 97 | :try_end_11 98 | .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_11} :catch_13 99 | 100 | move-result-object v0 101 | 102 | .line 22 103 | :goto_12 104 | return-object v0 105 | 106 | .line 19 107 | :catch_13 108 | move-exception v1 109 | 110 | .line 20 111 | invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V 112 | 113 | goto :goto_12 114 | .end method 115 | 116 | .method private static b([B)Ljava/lang/String; 117 | .registers 9 118 | 119 | .prologue 120 | const/4 v0, 0x0 121 | 122 | .line 26 123 | .line 27 124 | array-length v2, p0 125 | 126 | .line 28 127 | mul-int/lit8 v1, v2, 0x2 128 | 129 | new-array v3, v1, [C 130 | 131 | move v1, v0 132 | 133 | .line 30 134 | :goto_7 135 | if-ge v1, v2, :cond_24 136 | 137 | .line 31 138 | aget-byte v4, p0, v1 139 | 140 | .line 32 141 | add-int/lit8 v5, v0, 0x1 142 | 143 | .line 33 144 | sget-object v6, Lcn/wjdiankong/androiddemo/Utils;->a:[C 145 | 146 | ushr-int/lit8 v7, v4, 0x4 147 | 148 | and-int/lit8 v7, v7, 0xf 149 | 150 | aget-char v6, v6, v7 151 | 152 | aput-char v6, v3, v0 153 | 154 | .line 34 155 | add-int/lit8 v0, v5, 0x1 156 | 157 | .line 35 158 | sget-object v6, Lcn/wjdiankong/androiddemo/Utils;->a:[C 159 | 160 | and-int/lit8 v4, v4, 0xf 161 | 162 | aget-char v4, v6, v4 163 | 164 | aput-char v4, v3, v5 165 | 166 | .line 36 167 | add-int/lit8 v1, v1, 0x1 168 | 169 | .line 37 170 | goto :goto_7 171 | 172 | .line 38 173 | :cond_24 174 | new-instance v0, Ljava/lang/String; 175 | 176 | invoke-direct {v0, v3}, Ljava/lang/String;->([C)V 177 | 178 | return-object v0 179 | .end method 180 | -------------------------------------------------------------------------------- /java2smali/smali/cn/wjdiankong/hookpms/PmsHookBinderInvocationHandler.smali: -------------------------------------------------------------------------------- 1 | .class public Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler; 2 | .super Ljava/lang/Object; 3 | .source "PmsHookBinderInvocationHandler.java" 4 | 5 | # interfaces 6 | .implements Ljava/lang/reflect/InvocationHandler; 7 | 8 | 9 | # instance fields 10 | .field private SIGN:Ljava/lang/String; 11 | 12 | .field private appPkgName:Ljava/lang/String; 13 | 14 | .field private base:Ljava/lang/Object; 15 | 16 | 17 | # direct methods 18 | .method public constructor (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;I)V 19 | .registers 9 20 | 21 | .prologue 22 | .line 22 23 | invoke-direct {p0}, Ljava/lang/Object;->()V 24 | 25 | .line 20 26 | const-string v0, "" 27 | 28 | iput-object v0, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->appPkgName:Ljava/lang/String; 29 | 30 | .line 24 31 | :try_start_7 32 | iput-object p1, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->base:Ljava/lang/Object; 33 | 34 | .line 25 35 | iput-object p2, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->SIGN:Ljava/lang/String; 36 | 37 | .line 26 38 | iput-object p3, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->appPkgName:Ljava/lang/String; 39 | :try_end_d 40 | .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_d} :catch_e 41 | 42 | .line 30 43 | :goto_d 44 | return-void 45 | 46 | .line 27 47 | :catch_e 48 | move-exception v0 49 | 50 | .line 28 51 | const-string v1, "jw" 52 | 53 | new-instance v2, Ljava/lang/StringBuilder; 54 | 55 | invoke-direct {v2}, Ljava/lang/StringBuilder;->()V 56 | 57 | const-string v3, "error:" 58 | 59 | invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 60 | 61 | move-result-object v2 62 | 63 | invoke-static {v0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; 64 | 65 | move-result-object v0 66 | 67 | invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 68 | 69 | move-result-object v0 70 | 71 | invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 72 | 73 | move-result-object v0 74 | 75 | invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I 76 | 77 | goto :goto_d 78 | .end method 79 | 80 | 81 | # virtual methods 82 | .method public invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; 83 | .registers 9 84 | .annotation system Ldalvik/annotation/Throws; 85 | value = { 86 | Ljava/lang/Throwable; 87 | } 88 | .end annotation 89 | 90 | .prologue 91 | const/4 v4, 0x0 92 | 93 | .line 34 94 | const-string v0, "getPackageInfo" 95 | 96 | invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String; 97 | 98 | move-result-object v1 99 | 100 | invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z 101 | 102 | move-result v0 103 | 104 | if-eqz v0, :cond_56 105 | 106 | .line 35 107 | aget-object v0, p3, v4 108 | 109 | check-cast v0, Ljava/lang/String; 110 | 111 | .line 36 112 | const/4 v1, 0x1 113 | 114 | aget-object v1, p3, v1 115 | 116 | check-cast v1, Ljava/lang/Integer; 117 | 118 | .line 37 119 | invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I 120 | 121 | move-result v1 122 | 123 | const/16 v2, 0x40 124 | 125 | if-ne v1, v2, :cond_71 126 | 127 | iget-object v1, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->appPkgName:Ljava/lang/String; 128 | 129 | invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z 130 | 131 | move-result v0 132 | 133 | if-eqz v0, :cond_71 134 | 135 | .line 38 136 | new-instance v1, Landroid/content/pm/Signature; 137 | 138 | iget-object v0, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->SIGN:Ljava/lang/String; 139 | 140 | invoke-direct {v1, v0}, Landroid/content/pm/Signature;->(Ljava/lang/String;)V 141 | 142 | .line 39 143 | const-string v0, "jw" 144 | 145 | new-instance v2, Ljava/lang/StringBuilder; 146 | 147 | invoke-direct {v2}, Ljava/lang/StringBuilder;->()V 148 | 149 | const-string v3, "sign hashcode:" 150 | 151 | invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 152 | 153 | move-result-object v2 154 | 155 | invoke-virtual {v1}, Landroid/content/pm/Signature;->hashCode()I 156 | 157 | move-result v3 158 | 159 | invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; 160 | 161 | move-result-object v2 162 | 163 | invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 164 | 165 | move-result-object v2 166 | 167 | invoke-static {v0, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I 168 | 169 | .line 40 170 | iget-object v0, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->base:Ljava/lang/Object; 171 | 172 | invoke-virtual {p2, v0, p3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; 173 | 174 | move-result-object v0 175 | 176 | check-cast v0, Landroid/content/pm/PackageInfo; 177 | 178 | .line 41 179 | iget-object v2, v0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature; 180 | 181 | aput-object v1, v2, v4 182 | 183 | .line 50 184 | :goto_55 185 | return-object v0 186 | 187 | .line 44 188 | :cond_56 189 | const-string v0, "getInstallerPackageName" 190 | 191 | invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String; 192 | 193 | move-result-object v1 194 | 195 | invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z 196 | 197 | move-result v0 198 | 199 | if-eqz v0, :cond_71 200 | 201 | .line 45 202 | aget-object v0, p3, v4 203 | 204 | check-cast v0, Ljava/lang/String; 205 | 206 | .line 46 207 | const-string v1, "com.dans.apps.webd" 208 | 209 | invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z 210 | 211 | move-result v0 212 | 213 | if-eqz v0, :cond_71 214 | 215 | .line 47 216 | const-string v0, "com.android.vending" 217 | 218 | goto :goto_55 219 | 220 | .line 50 221 | :cond_71 222 | iget-object v0, p0, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->base:Ljava/lang/Object; 223 | 224 | invoke-virtual {p2, v0, p3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; 225 | 226 | move-result-object v0 227 | 228 | goto :goto_55 229 | .end method 230 | -------------------------------------------------------------------------------- /java2smali/smali/cn/wjdiankong/hookpms/ServiceManagerWraper.smali: -------------------------------------------------------------------------------- 1 | .class public Lcn/wjdiankong/hookpms/ServiceManagerWraper; 2 | .super Ljava/lang/Object; 3 | .source "ServiceManagerWraper.java" 4 | 5 | 6 | # direct methods 7 | .method public constructor ()V 8 | .registers 1 9 | 10 | .prologue 11 | .line 14 12 | invoke-direct {p0}, Ljava/lang/Object;->()V 13 | 14 | return-void 15 | .end method 16 | 17 | .method public static hookPMS(Landroid/content/Context;)V 18 | .registers 4 19 | 20 | .prologue 21 | .line 46 22 | const-string v0, "308203c7308202afa00302010202046aa5b23d300d06092a864886f70d01010b0500308192310b300906035504061302434e3112301006035504080c09e58c97e4baace5b882310f300d06035504070c06e58c97e4baac31333031060355040a0c2ae58c97e4baace5bda9e4ba91e59ca8e7babfe68a80e69cafe5bc80e58f91e69c89e99990e585ace58fb831183016060355040b130f4d65656c69766520416e64726f6964310f300d060355040313066d6565676f643020170d3135303331393032343933375a180f33303134303732303032343933375a308192310b300906035504061302434e3112301006035504080c09e58c97e4baace5b882310f300d06035504070c06e58c97e4baac31333031060355040a0c2ae58c97e4baace5bda9e4ba91e59ca8e7babfe68a80e69cafe5bc80e58f91e69c89e99990e585ace58fb831183016060355040b130f4d65656c69766520416e64726f6964310f300d060355040313066d6565676f6430820122300d06092a864886f70d01010105000382010f003082010a0282010100afa19f82b0a34cd2a40365dda2d9b6c088fc5eeab199175a268c7f2acc738c37a1dc8f705e17b2581cee7df93053495dd70f176c5865f41f6c6374e7b7d9fb31968694d95b623546f4e3b09b9b186dc282b97ac7d0f63441c9917790af1d26a2eeae4d0fd26ec26d6050c59bd9202080d87417fad819ddf70882c7c04137e3d2a07802de8882ef81e5458f7e7973faacfd19ede809bef680ed51b4f01a08eba4644185278e62c7bcff40e77958b803aa0ea1d2ed7e2294736b0745517188367b467472a1ef121d0ddca934b30a68ce6482b95c424701852dff1487575751cececdda382a4cd702b0a148622eb3f3b30ff9bdfaf53969da991c05307ee6b9d5ad0203010001a321301f301d0603551d0e041604148fdf3566bd514be0ab8057f60c309cf818df94b9300d06092a864886f70d01010b050003820101008bc52464264d39d67979aa39b7a0508670f85116c5510db03bf8a57f0fbcc9f0f80cce8d96a14afc3403f4466e7d37ad08c119873d47a471eaf83d92828879d9d62a1af02e33783f38d1ae1245fee410885c223ff5362f41ce0cd33735e7d70b6b1b9d625d558d1ae3db857c5fec33a62a61b54cebc260726f2db3425cef1217c6667ddd13a99445df9318d287e82b8d588a6805628ea0f131240796cb66d6371866dbf7ba04801e39d42c7d49a00bed479db3164872d0ffc12dec76e6b541e77e2844687cfb11559736825a36fa6d65cc75f6f4d95c75253db92ce7749013def632686b3a572bf0ab299c18c778f3948e22632a5da1e1505fea2d02768fbe9f" 23 | 24 | .line 47 25 | const-string v1, "com.meelive.ingkee" 26 | 27 | const/4 v2, 0x0 28 | 29 | invoke-static {p0, v0, v1, v2}, Lcn/wjdiankong/hookpms/ServiceManagerWraper;->hookPMS(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)V 30 | 31 | .line 48 32 | const-string v0, "jw" 33 | 34 | const-string v1, "hook succ" 35 | 36 | invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I 37 | 38 | .line 49 39 | return-void 40 | .end method 41 | 42 | .method public static hookPMS(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)V 43 | .registers 11 44 | 45 | .prologue 46 | .line 19 47 | :try_start_0 48 | const-string v0, "android.app.ActivityThread" 49 | 50 | invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; 51 | 52 | move-result-object v0 53 | 54 | .line 20 55 | const-string v1, "currentActivityThread" 56 | 57 | const/4 v2, 0x0 58 | 59 | new-array v2, v2, [Ljava/lang/Class; 60 | 61 | invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; 62 | 63 | move-result-object v1 64 | 65 | .line 22 66 | const/4 v2, 0x0 67 | 68 | const/4 v3, 0x0 69 | 70 | new-array v3, v3, [Ljava/lang/Object; 71 | 72 | invoke-virtual {v1, v2, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; 73 | 74 | move-result-object v1 75 | 76 | .line 24 77 | const-string v2, "sPackageManager" 78 | 79 | invoke-virtual {v0, v2}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field; 80 | 81 | move-result-object v0 82 | 83 | .line 25 84 | const/4 v2, 0x1 85 | 86 | invoke-virtual {v0, v2}, Ljava/lang/reflect/Field;->setAccessible(Z)V 87 | 88 | .line 26 89 | invoke-virtual {v0, v1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object; 90 | 91 | move-result-object v2 92 | 93 | .line 28 94 | const-string v3, "android.content.pm.IPackageManager" 95 | 96 | invoke-static {v3}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; 97 | 98 | move-result-object v3 99 | 100 | .line 29 101 | invoke-virtual {v3}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader; 102 | 103 | move-result-object v4 104 | 105 | const/4 v5, 0x1 106 | 107 | new-array v5, v5, [Ljava/lang/Class; 108 | 109 | const/4 v6, 0x0 110 | 111 | aput-object v3, v5, v6 112 | 113 | new-instance v3, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler; 114 | 115 | const/4 v6, 0x0 116 | 117 | invoke-direct {v3, v2, p1, p2, v6}, Lcn/wjdiankong/hookpms/PmsHookBinderInvocationHandler;->(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;I)V 118 | 119 | invoke-static {v4, v5, v3}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; 120 | 121 | move-result-object v2 122 | 123 | .line 34 124 | invoke-virtual {v0, v1, v2}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V 125 | 126 | .line 36 127 | invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; 128 | 129 | move-result-object v0 130 | 131 | .line 37 132 | invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; 133 | 134 | move-result-object v1 135 | 136 | const-string v3, "mPM" 137 | 138 | invoke-virtual {v1, v3}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field; 139 | 140 | move-result-object v1 141 | 142 | .line 38 143 | const/4 v3, 0x1 144 | 145 | invoke-virtual {v1, v3}, Ljava/lang/reflect/Field;->setAccessible(Z)V 146 | 147 | .line 39 148 | invoke-virtual {v1, v0, v2}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V 149 | :try_end_57 150 | .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_57} :catch_58 151 | 152 | .line 43 153 | :goto_57 154 | return-void 155 | 156 | .line 40 157 | :catch_58 158 | move-exception v0 159 | 160 | .line 41 161 | const-string v1, "jw" 162 | 163 | new-instance v2, Ljava/lang/StringBuilder; 164 | 165 | invoke-direct {v2}, Ljava/lang/StringBuilder;->()V 166 | 167 | const-string v3, "hook pms error:" 168 | 169 | invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 170 | 171 | move-result-object v2 172 | 173 | invoke-static {v0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; 174 | 175 | move-result-object v0 176 | 177 | invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 178 | 179 | move-result-object v0 180 | 181 | invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 182 | 183 | move-result-object v0 184 | 185 | invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I 186 | 187 | goto :goto_57 188 | .end method 189 | --------------------------------------------------------------------------------