├── .classpath
├── .gitignore
├── .project
├── AndroidManifest.xml
├── README.md
├── ic_launcher-web.png
├── libs
├── android-support-v4.jar
├── ddmlib.jar
├── substrate-api.jar
└── substrate-bless.jar
├── proguard-project.txt
├── project.properties
├── res
├── drawable-hdpi
│ └── ic_launcher.png
├── drawable-mdpi
│ └── ic_launcher.png
├── drawable-xhdpi
│ └── ic_launcher.png
├── drawable-xxhdpi
│ └── ic_launcher.png
├── layout
│ └── activity_test.xml
├── menu
│ └── test.xml
├── values-v11
│ └── styles.xml
├── values-v14
│ └── styles.xml
├── values-w820dp
│ └── dimens.xml
└── values
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
├── src
└── com
│ └── shuwoom
│ └── apihooker
│ ├── ApplicationConfig.java
│ ├── GlobalContextHooker.java
│ ├── SubstrateMain.java
│ ├── TestActivity.java
│ ├── common
│ ├── Config.java
│ ├── DataChanger.java
│ ├── DataWatcher.java
│ └── InterceptEvent.java
│ ├── hookers
│ ├── Hooker.java
│ ├── NetworkHooker.java
│ └── interfaces
│ │ └── HookerListener.java
│ └── services
│ └── ReceiverService.java
└── test_pic
├── activity_show.png
└── logcat.png
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | lt application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 |
15 | # Gradle files
16 | .gradle/
17 | build/
18 |
19 | # Local configuration file (sdk path, etc)
20 | local.properties
21 |
22 | # Proguard folder generated by Eclipse
23 | proguard/
24 |
25 | # Log Files
26 | *.log
27 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | AndroidAPIHooker
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AndroidAPIHooker
2 | master分支停止更新,最新代码在v2.0分支。
3 |
4 | 
5 |
6 |
7 | 
8 |
--------------------------------------------------------------------------------
/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/ic_launcher-web.png
--------------------------------------------------------------------------------
/libs/android-support-v4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/libs/android-support-v4.jar
--------------------------------------------------------------------------------
/libs/ddmlib.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/libs/ddmlib.jar
--------------------------------------------------------------------------------
/libs/substrate-api.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/libs/substrate-api.jar
--------------------------------------------------------------------------------
/libs/substrate-bless.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/libs/substrate-bless.jar
--------------------------------------------------------------------------------
/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-22
15 |
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guanchao/AndroidAPIHooker/3cf38b2e3ca49e75831067675beb4b740e316b00/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/layout/activity_test.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/res/menu/test.xml:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 | 64dp
9 |
10 |
11 |
--------------------------------------------------------------------------------
/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 |
7 |
8 |
--------------------------------------------------------------------------------
/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AndroidAPIHooker
5 | TestActivity
6 | Hello world!
7 | Settings
8 |
9 |
10 |
--------------------------------------------------------------------------------
/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/com/shuwoom/apihooker/ApplicationConfig.java:
--------------------------------------------------------------------------------
1 | package com.shuwoom.apihooker;
2 |
3 | import android.content.Context;
4 |
5 | public class ApplicationConfig {
6 | private static String packageName;
7 | private static Context context;
8 |
9 | public static String getPackageName() {
10 | return packageName;
11 | }
12 |
13 | public static void setPackageName(String packageName) {
14 | ApplicationConfig.packageName = packageName;
15 | }
16 |
17 | public static Context getContext() {
18 | return context;
19 | }
20 |
21 | public static void setContext(Context context) {
22 | ApplicationConfig.context = context;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/com/shuwoom/apihooker/GlobalContextHooker.java:
--------------------------------------------------------------------------------
1 | package com.shuwoom.apihooker;
2 |
3 | import java.lang.reflect.Method;
4 | import java.util.List;
5 |
6 | import android.content.Context;
7 | import android.util.Log;
8 |
9 | import com.saurik.substrate.MS;
10 | import com.shuwoom.apihooker.common.Config;
11 |
12 | public class GlobalContextHooker {
13 |
14 | public void hook(final List filteredPackageNames){
15 | MS.hookClassLoad("android.app.ContextImpl", new MS.ClassLoadHook() {
16 |
17 | @SuppressWarnings("unchecked")
18 | @Override
19 | public void classLoaded(Class> resources) {
20 | loadContext(resources, filteredPackageNames);
21 | }
22 | });
23 | }
24 |
25 | @SuppressWarnings("unchecked")
26 | protected void loadContext(Class> resources, final List filteredPackageNames) {
27 | Method getPackageNameMethod = null;
28 | try {
29 | getPackageNameMethod = resources.getMethod("getPackageName",new Class>[] {});
30 | } catch (NoSuchMethodException e1) {
31 | Log.v(Config.DEBUG_TAG, "3333333333" + e1);
32 | e1.printStackTrace();
33 | }
34 |
35 | if (getPackageNameMethod == null) {
36 | return ;
37 | }
38 |
39 | final MS.MethodPointer