├── 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 |
--------------------------------------------------------------------------------