├── .classpath
├── .project
├── AndroidManifest.xml
├── XposedBridgeApi-54.jar
├── assets
└── xposed_init
├── bin
├── AndroidManifest.xml
├── classes.dex
├── classes
│ └── com
│ │ ├── binpang
│ │ ├── apiMonitor
│ │ │ ├── AbstractBahaviorHookCallBack.class
│ │ │ ├── AccountManagerHook$1.class
│ │ │ ├── AccountManagerHook$2.class
│ │ │ ├── AccountManagerHook.class
│ │ │ ├── ActivityManagerHook$1.class
│ │ │ ├── ActivityManagerHook$2.class
│ │ │ ├── ActivityManagerHook$3.class
│ │ │ ├── ActivityManagerHook.class
│ │ │ ├── ActivityThreadHook$1.class
│ │ │ ├── ActivityThreadHook.class
│ │ │ ├── AlarmManagerHook$1.class
│ │ │ ├── AlarmManagerHook.class
│ │ │ ├── ApiMonitorHook$InvokeInfo.class
│ │ │ ├── ApiMonitorHook.class
│ │ │ ├── ApiMonitorHookManager.class
│ │ │ ├── AudioRecordHook$1.class
│ │ │ ├── AudioRecordHook.class
│ │ │ ├── BlueToothHook$1.class
│ │ │ ├── BlueToothHook$2.class
│ │ │ ├── BlueToothHook.class
│ │ │ ├── CameraHook$1.class
│ │ │ ├── CameraHook$2.class
│ │ │ ├── CameraHook$3.class
│ │ │ ├── CameraHook$4.class
│ │ │ ├── CameraHook.class
│ │ │ ├── ConnectivityManagerHook$1.class
│ │ │ ├── ConnectivityManagerHook.class
│ │ │ ├── ContentResolverHook$1.class
│ │ │ ├── ContentResolverHook$2.class
│ │ │ ├── ContentResolverHook$3.class
│ │ │ ├── ContentResolverHook$4.class
│ │ │ ├── ContentResolverHook$5.class
│ │ │ ├── ContentResolverHook$6.class
│ │ │ ├── ContentResolverHook$7.class
│ │ │ ├── ContentResolverHook.class
│ │ │ ├── ContextImplHook$1.class
│ │ │ ├── ContextImplHook.class
│ │ │ ├── LocationHook$1.class
│ │ │ ├── LocationHook.class
│ │ │ ├── MediaRecorderHook$1.class
│ │ │ ├── MediaRecorderHook$2.class
│ │ │ ├── MediaRecorderHook$3.class
│ │ │ ├── MediaRecorderHook$4.class
│ │ │ ├── MediaRecorderHook.class
│ │ │ ├── NetWorkHook$1.class
│ │ │ ├── NetWorkHook$2.class
│ │ │ ├── NetWorkHook.class
│ │ │ ├── NotificationManagerHook$1.class
│ │ │ ├── NotificationManagerHook.class
│ │ │ ├── PackageManagerHook$1.class
│ │ │ ├── PackageManagerHook$2.class
│ │ │ ├── PackageManagerHook$3.class
│ │ │ ├── PackageManagerHook$4.class
│ │ │ ├── PackageManagerHook.class
│ │ │ ├── ProcessBuilderHook$1.class
│ │ │ ├── ProcessBuilderHook.class
│ │ │ ├── RuntimeHook$1.class
│ │ │ ├── RuntimeHook.class
│ │ │ ├── SmsManagerHook$1.class
│ │ │ ├── SmsManagerHook$2.class
│ │ │ ├── SmsManagerHook$3.class
│ │ │ ├── SmsManagerHook$4.class
│ │ │ ├── SmsManagerHook.class
│ │ │ ├── TelephonyManagerHook$1.class
│ │ │ ├── TelephonyManagerHook$2.class
│ │ │ └── TelephonyManagerHook.class
│ │ └── methodhook
│ │ │ ├── FindMethod.class
│ │ │ ├── HookHelperFacktory.class
│ │ │ ├── HookHelperInterface.class
│ │ │ ├── HookParam.class
│ │ │ ├── Logger.class
│ │ │ ├── MainActivity.class
│ │ │ ├── MethodHookCallBack.class
│ │ │ ├── XposeHookHelperImpl.class
│ │ │ └── methodHookStart.class
│ │ └── example
│ │ └── methodhook
│ │ ├── BuildConfig.class
│ │ ├── R$attr.class
│ │ ├── R$dimen.class
│ │ ├── R$drawable.class
│ │ ├── R$id.class
│ │ ├── R$layout.class
│ │ ├── R$menu.class
│ │ ├── R$string.class
│ │ ├── R$style.class
│ │ └── R.class
├── dexedLibs
│ └── android-support-v4-b66c4d24896a180888f9a0cf8d576b8a.jar
├── methodHook.apk
├── res
│ └── crunch
│ │ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ └── ic_launcher.png
│ │ └── drawable-xxhdpi
│ │ └── ic_launcher.png
└── resources.ap_
├── gen
└── com
│ └── example
│ └── methodhook
│ ├── BuildConfig.java
│ └── R.java
├── ic_launcher-web.png
├── libs
└── android-support-v4.jar
├── moban.png
├── proguard-project.txt
├── project.properties
├── readme.md
├── res
├── drawable-hdpi
│ └── ic_launcher.png
├── drawable-mdpi
│ └── ic_launcher.png
├── drawable-xhdpi
│ └── ic_launcher.png
├── drawable-xxhdpi
│ └── ic_launcher.png
├── layout
│ └── activity_main.xml
├── menu
│ └── main.xml
├── values-v11
│ └── styles.xml
├── values-v14
│ └── styles.xml
├── values-w820dp
│ └── dimens.xml
└── values
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
└── src
└── com
└── binpang
├── apiMonitor
├── AbstractBahaviorHookCallBack.java
├── AccountManagerHook.java
├── ActivityManagerHook.java
├── ActivityThreadHook.java
├── AlarmManagerHook.java
├── ApiMonitorHook.java
├── ApiMonitorHookManager.java
├── AudioRecordHook.java
├── BlueToothHook.java
├── CameraHook.java
├── ConnectivityManagerHook.java
├── ContentResolverHook.java
├── ContextImplHook.java
├── LocationHook.java
├── MediaRecorderHook.java
├── NetWorkHook.java
├── NotificationManagerHook.java
├── PackageManagerHook.java
├── ProcessBuilderHook.java
├── RuntimeHook.java
├── SmsManagerHook.java
└── TelephonyManagerHook.java
└── methodhook
├── FindMethod.java
├── HookHelperFacktory.java
├── HookHelperInterface.java
├── HookParam.java
├── Logger.java
├── MainActivity.java
├── MethodHookCallBack.java
├── XposeHookHelperImpl.java
└── methodHookStart.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | methodHook
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 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
28 |
31 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/XposedBridgeApi-54.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/XposedBridgeApi-54.jar
--------------------------------------------------------------------------------
/assets/xposed_init:
--------------------------------------------------------------------------------
1 | com.binpang.methodhook.methodHookStart
--------------------------------------------------------------------------------
/bin/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
28 |
31 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/bin/classes.dex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes.dex
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AbstractBahaviorHookCallBack.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AbstractBahaviorHookCallBack.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AccountManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AccountManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AccountManagerHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AccountManagerHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AccountManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AccountManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityManagerHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityThreadHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityThreadHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ActivityThreadHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ActivityThreadHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AlarmManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AlarmManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AlarmManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AlarmManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ApiMonitorHook$InvokeInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ApiMonitorHook$InvokeInfo.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ApiMonitorHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ApiMonitorHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ApiMonitorHookManager.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ApiMonitorHookManager.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AudioRecordHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AudioRecordHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/AudioRecordHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/AudioRecordHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/BlueToothHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/BlueToothHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/BlueToothHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/BlueToothHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/BlueToothHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/BlueToothHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/CameraHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/CameraHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/CameraHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/CameraHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/CameraHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/CameraHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/CameraHook$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/CameraHook$4.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/CameraHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/CameraHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ConnectivityManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ConnectivityManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ConnectivityManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ConnectivityManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$4.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$5.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$5.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$6.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$6.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook$7.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook$7.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContentResolverHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContentResolverHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContextImplHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContextImplHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ContextImplHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ContextImplHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/LocationHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/LocationHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/LocationHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/LocationHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/MediaRecorderHook$4.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/MediaRecorderHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/MediaRecorderHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/NetWorkHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/NetWorkHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/NetWorkHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/NetWorkHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/NetWorkHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/NetWorkHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/NotificationManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/NotificationManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/NotificationManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/NotificationManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/PackageManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/PackageManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/PackageManagerHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/PackageManagerHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/PackageManagerHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/PackageManagerHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/PackageManagerHook$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/PackageManagerHook$4.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/PackageManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/PackageManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ProcessBuilderHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ProcessBuilderHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/ProcessBuilderHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/ProcessBuilderHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/RuntimeHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/RuntimeHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/RuntimeHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/RuntimeHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/SmsManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/SmsManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/SmsManagerHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/SmsManagerHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/SmsManagerHook$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/SmsManagerHook$3.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/SmsManagerHook$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/SmsManagerHook$4.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/SmsManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/SmsManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook$1.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook$2.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/apiMonitor/TelephonyManagerHook.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/FindMethod.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/FindMethod.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/HookHelperFacktory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/HookHelperFacktory.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/HookHelperInterface.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/HookHelperInterface.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/HookParam.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/HookParam.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/Logger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/Logger.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/MainActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/MainActivity.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/MethodHookCallBack.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/MethodHookCallBack.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/XposeHookHelperImpl.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/XposeHookHelperImpl.class
--------------------------------------------------------------------------------
/bin/classes/com/binpang/methodhook/methodHookStart.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/binpang/methodhook/methodHookStart.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/BuildConfig.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$attr.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$dimen.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$drawable.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$id.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$layout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$layout.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$menu.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$menu.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$string.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$string.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R$style.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R$style.class
--------------------------------------------------------------------------------
/bin/classes/com/example/methodhook/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/classes/com/example/methodhook/R.class
--------------------------------------------------------------------------------
/bin/dexedLibs/android-support-v4-b66c4d24896a180888f9a0cf8d576b8a.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/dexedLibs/android-support-v4-b66c4d24896a180888f9a0cf8d576b8a.jar
--------------------------------------------------------------------------------
/bin/methodHook.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/methodHook.apk
--------------------------------------------------------------------------------
/bin/res/crunch/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/res/crunch/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/crunch/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/res/crunch/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/crunch/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/res/crunch/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/crunch/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/res/crunch/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/resources.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/bin/resources.ap_
--------------------------------------------------------------------------------
/gen/com/example/methodhook/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /** Automatically generated file. DO NOT MODIFY */
2 | package com.example.methodhook;
3 |
4 | public final class BuildConfig {
5 | public final static boolean DEBUG = true;
6 | }
--------------------------------------------------------------------------------
/gen/com/example/methodhook/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 |
8 | package com.example.methodhook;
9 |
10 | public final class R {
11 | public static final class attr {
12 | }
13 | public static final class dimen {
14 | /** Default screen margins, per the Android Design guidelines.
15 |
16 | Example customization of dimensions originally defined in res/values/dimens.xml
17 | (such as screen margins) for screens with more than 820dp of available width. This
18 | would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
19 |
20 | */
21 | public static final int activity_horizontal_margin=0x7f040000;
22 | public static final int activity_vertical_margin=0x7f040001;
23 | }
24 | public static final class drawable {
25 | public static final int ic_launcher=0x7f020000;
26 | }
27 | public static final class id {
28 | public static final int action_settings=0x7f080000;
29 | }
30 | public static final class layout {
31 | public static final int activity_main=0x7f030000;
32 | }
33 | public static final class menu {
34 | public static final int main=0x7f070000;
35 | }
36 | public static final class string {
37 | public static final int action_settings=0x7f050002;
38 | public static final int app_name=0x7f050000;
39 | public static final int hello_world=0x7f050001;
40 | }
41 | public static final class style {
42 | /**
43 | Base application theme, dependent on API level. This theme is replaced
44 | by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
45 |
46 |
47 | Theme customizations available in newer API levels can go in
48 | res/values-vXX/styles.xml, while customizations related to
49 | backward-compatibility can go here.
50 |
51 |
52 | Base application theme for API 11+. This theme completely replaces
53 | AppBaseTheme from res/values/styles.xml on API 11+ devices.
54 |
55 | API 11 theme customizations can go here.
56 |
57 | Base application theme for API 14+. This theme completely replaces
58 | AppBaseTheme from BOTH res/values/styles.xml and
59 | res/values-v11/styles.xml on API 14+ devices.
60 |
61 | API 14 theme customizations can go here.
62 | */
63 | public static final int AppBaseTheme=0x7f060000;
64 | /** Application theme.
65 | All customizations that are NOT specific to a particular API-level can go here.
66 | */
67 | public static final int AppTheme=0x7f060001;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/ic_launcher-web.png
--------------------------------------------------------------------------------
/libs/android-support-v4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/libs/android-support-v4.jar
--------------------------------------------------------------------------------
/moban.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/moban.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # 安装条件及过程:
2 | * 需要一台root过的android4.4.x的设备
3 | * 在该设备中安装Xposed Installer客户端,由于安装Xposed时,需要将android的app_main.cpp等文件进行替换,
4 | 所以需要android的root权限
5 | * 安装编写好的com.bingpang.methodhook模块至该客户端,此时Xposed客户端将会检测到有Xposed模块,如图所示
6 | 
7 | * 勾选该模板并重启android设备
8 | ----
9 | ----
10 | ----
11 | # Hook Method解析
12 | ## 实现的功能
13 | * 标签为FM的log输出了具体敏感函数的类和方法名,如android.telephony.SmsManager->sendTextMessage
14 | * 标签为DetailInform的log则输出了敏感函数相应的数据,如在android.telephony.SmsManager->sendTextMessage中
15 | 会输出Send SMS -> SMS DestNumber: destNumber , SMS Content: Content
16 | ## 具体的敏感函数列表
17 |
18 | *SmsManager*
19 | - android.telephony.SmsManager/sendTextMessage
20 | - android.telephony.SmsManager/getAllMessagesFromIcc
21 | - android.telephony.SmsManager/sendDataMessage
22 | - android.telephony.SmsManager/sendMultipartTextMessage
23 |
24 | *TelephonyManager*
25 | - android.telephony.TelephonyManager/getLine1Number
26 | - android.telephony.TelephonyManager/listen
27 |
28 | *AccountManager*
29 | - android.accounts.AccountManager/getAccounts
30 | - android.accounts.AccountManager/getAccountsByType
31 |
32 | *ActivityManager*
33 | - android.app.ActivityManager/killBackgroundProcesses
34 | - android.app.ActivityManager/forceStopPackage
35 |
36 | *AlarmManager*
37 | - android.app.AlarmManager/setImpl
38 |
39 | *AudioRecord*
40 | - android.media.AudioRecord
41 |
42 | *Camera*
43 | - android.hardware.Camera/takepicture
44 | - android.hardware.Camera/setPreviewCallback
45 | - android.hardware.Camera/setPreviewCallbackWithBuffer
46 | - android.hardware.Camera/setOneShotPreviewCallback
47 |
48 | *ConnectivityManager*
49 | - android.net.ConnectivityManager/setMobileDataEnabled
50 |
51 | *ContentResolver*
52 | - android.content.ContentResolver/qurey
53 | - android.content.ContentResolver/registerContentObserver
54 | - android.content.ContentResolver/insert
55 | - android.content.ContentResolver/bulkInsert
56 | - android.content.ContentResolver/delete
57 | - android.content.ContentResolver/update
58 | - android.content.ContentResolver/applyBatch
59 |
60 | *ContextImpl*
61 | - android.app.ContextImpl/registerReceiver
62 |
63 | *MediaRecorder*
64 | - android.media.MediaRecorder/start
65 | - android.media.MediaRecorder/stop
66 |
67 | *Internet*
68 | - java.net.URL/openConnection
69 | - org.apache.http.impl.client.AbstractHttpClient/execute
70 |
71 | *NotificationManager*
72 | - android.app.NotificationManager/notify
73 |
74 | *ApplicationPackageManager*
75 | - android.app.ApplicationPackageManager/installPackage
76 | - android.app.ApplicationPackageManager/deletePackage
77 | - android.app.ApplicationPackageManager/getInstalledPackages
78 |
79 |
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/res/menu/main.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 | methodHook
5 | Hello world!
6 | Settings
7 |
8 |
9 |
--------------------------------------------------------------------------------
/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/AbstractBahaviorHookCallBack.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import com.binpang.methodhook.HookParam;
4 | import com.binpang.methodhook.Logger;
5 | import com.binpang.methodhook.MethodHookCallBack;
6 |
7 |
8 |
9 | public abstract class AbstractBahaviorHookCallBack extends MethodHookCallBack {
10 |
11 | @Override
12 | public void beforeHookedMethod(HookParam param) {
13 | // TODO Auto-generated method stub
14 | /*int length = param.args.length;
15 | Object[] m = param.args;
16 | String args = "/";
17 | for(int i = 0; i < length;i++)
18 | {
19 | args+=(String)m[i]+"/";
20 | }*/
21 | Logger.logD("Invoke "+ param.method.getDeclaringClass().getName()+"->"+param.method.getName());
22 | this.descParam(param);
23 | //this.printStackInfo();
24 | }
25 |
26 | @Override
27 | public void afterHookedMethod(HookParam param) {
28 | // TODO Auto-generated method stub
29 | //Logger.log_behavior("End Invoke "+ param.method.toString());
30 | }
31 |
32 | private void printStackInfo(){
33 | Throwable ex = new Throwable();
34 | StackTraceElement[] stackElements = ex.getStackTrace();
35 | if(stackElements != null){
36 | StackTraceElement st;
37 | for(int i=0; i");
26 | }
27 | });
28 |
29 | Method getAccountsByTypeMethod = FindMethod.findMethod(
30 | "android.accounts.AccountManager", ClassLoader.getSystemClassLoader(),
31 | "getAccountsByType",String.class);
32 | hookhelper.hookMethod(getAccountsByTypeMethod, new AbstractBahaviorHookCallBack() {
33 |
34 | @Override
35 | public void descParam(HookParam param) {
36 | // TODO Auto-generated method stub
37 | String type = (String) param.args[0];
38 | Logger.logI("Get Account By Type ->");
39 | Logger.logI("type :" +type);
40 | }
41 | });
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ActivityManagerHook.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bin2415/methodHook/c241afe73ec20e18df64cfc8817775ad134af999/src/com/binpang/apiMonitor/ActivityManagerHook.java
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ActivityThreadHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 |
6 |
7 |
8 | import com.binpang.methodhook.FindMethod;
9 | import com.binpang.methodhook.HookParam;
10 | import com.binpang.methodhook.Logger;
11 |
12 | public class ActivityThreadHook extends ApiMonitorHook {
13 |
14 | @Override
15 | public void startHook() {
16 | // TODO Auto-generated method stub
17 | try {
18 | Class receiverDataClass = Class.forName("android.app.ActivityThread$ReceiverData");
19 | if (receiverDataClass != null) {
20 | Method handleReceiverMethod = FindMethod.findMethod("android.app.ActivityThread", ClassLoader.getSystemClassLoader(),
21 | "handleReceiver", receiverDataClass);
22 | hookhelper.hookMethod(handleReceiverMethod, new AbstractBahaviorHookCallBack() {
23 |
24 | @Override
25 | public void descParam(HookParam param) {
26 | Logger.logI("The Receiver Information:");
27 | Object data = param.args[0];
28 | Logger.logI(data.toString());
29 |
30 | }
31 | });
32 | }
33 | } catch (ClassNotFoundException e) {
34 | // TODO Auto-generated catch block
35 | e.printStackTrace();
36 | }
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/AlarmManagerHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.InvocationTargetException;
4 | import java.lang.reflect.Method;
5 |
6 | import android.app.PendingIntent;
7 | import android.content.ComponentName;
8 | import android.content.Intent;
9 | import android.os.WorkSource;
10 |
11 | import com.binpang.methodhook.FindMethod;
12 | import com.binpang.methodhook.HookParam;
13 | import com.binpang.methodhook.Logger;
14 |
15 |
16 | public class AlarmManagerHook extends ApiMonitorHook {
17 |
18 | @Override
19 | public void startHook() {
20 |
21 | Method setImplmethod = FindMethod.findMethod(
22 | "android.app.AlarmManager", ClassLoader.getSystemClassLoader(),
23 | "setImpl",int.class,long.class,long.class,long.class,PendingIntent.class,WorkSource.class);
24 | hookhelper.hookMethod(setImplmethod, new AbstractBahaviorHookCallBack() {
25 |
26 | @Override
27 | public void descParam(HookParam param) {
28 | Logger.logI("The Alarm Information:");
29 | PendingIntent intent = (PendingIntent) param.args[4];
30 | descPendingIntent(intent);
31 | Logger.logI("TriggerAtMillis = "+param.args[1]);
32 | Logger.logI("windowMillis = "+param.args[2]);
33 | Logger.logI("intervalMillis = "+param.args[3]);
34 |
35 | }
36 | });
37 |
38 | }
39 |
40 | private void descPendingIntent(PendingIntent pintent){
41 | Method getIntentMethod = FindMethod.findMethod(
42 | "android.app.PendingIntent", ClassLoader.getSystemClassLoader(),
43 | "getIntent");
44 | try {
45 | Intent intent = (Intent) getIntentMethod.invoke(pintent, new Object[]{});
46 | ComponentName cn = intent.getComponent();
47 | if(cn != null){
48 | Logger.logI("The ComponentName = "+cn.getPackageName()+"/"+cn.getClassName());
49 | }
50 | Logger.logI("The Intent Action = "+intent.getAction());
51 | } catch (IllegalArgumentException e) {
52 | // TODO Auto-generated catch block
53 | e.printStackTrace();
54 | } catch (IllegalAccessException e) {
55 | // TODO Auto-generated catch block
56 | e.printStackTrace();
57 | } catch (InvocationTargetException e) {
58 | // TODO Auto-generated catch block
59 | e.printStackTrace();
60 | }
61 |
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ApiMonitorHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import com.binpang.methodhook.HookHelperFacktory;
4 | import com.binpang.methodhook.HookHelperInterface;
5 |
6 |
7 |
8 |
9 | public abstract class ApiMonitorHook {
10 |
11 | protected HookHelperInterface hookhelper = HookHelperFacktory.getHookHelper();
12 | public static class InvokeInfo{
13 | private long invokeAtTime;
14 | private String className;
15 | private String methodName;
16 | private Object[] argv;
17 | private Object result;
18 | private Object invokeState;
19 | }
20 | public abstract void startHook();
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ApiMonitorHookManager.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 |
4 |
5 | public class ApiMonitorHookManager {
6 |
7 | private static ApiMonitorHookManager hookmger;
8 | private SmsManagerHook smsManagerHook;
9 | private TelephonyManagerHook telephonyManagerHook;
10 | private MediaRecorderHook mediaRecorderHook;
11 | private AccountManagerHook accountManagerHook;
12 | private ActivityManagerHook activityManagerHook;
13 | private AlarmManagerHook alarmManagerHook;
14 | private ConnectivityManagerHook connectivityManagerHook;
15 | private ContentResolverHook contentResolverHook;
16 | private ContextImplHook contextImplHook;
17 | private PackageManagerHook packageManagerHook;
18 | private RuntimeHook runtimeHook;
19 | private ActivityThreadHook activityThreadHook;
20 | private AudioRecordHook audioRecordHook;
21 | private CameraHook cameraHook;
22 | private NetWorkHook networkHook;
23 | private NotificationManagerHook notificationManagerHook;
24 | private ProcessBuilderHook processBuilderHook;
25 |
26 |
27 | private ApiMonitorHookManager(){
28 | this.smsManagerHook = new SmsManagerHook();
29 | this.telephonyManagerHook = new TelephonyManagerHook();
30 | this.mediaRecorderHook = new MediaRecorderHook();
31 | this.accountManagerHook = new AccountManagerHook();
32 | this.activityManagerHook = new ActivityManagerHook();
33 | this.alarmManagerHook= new AlarmManagerHook();
34 | this.connectivityManagerHook = new ConnectivityManagerHook();
35 | this.contentResolverHook = new ContentResolverHook();
36 | this.contextImplHook = new ContextImplHook();
37 | this.packageManagerHook = new PackageManagerHook();
38 | this.runtimeHook = new RuntimeHook();
39 | this.activityThreadHook = new ActivityThreadHook();
40 | this.audioRecordHook = new AudioRecordHook();
41 | this.cameraHook = new CameraHook();
42 | this.networkHook = new NetWorkHook();
43 | this.notificationManagerHook = new NotificationManagerHook();
44 | this.processBuilderHook = new ProcessBuilderHook();
45 | }
46 |
47 | public static ApiMonitorHookManager getInstance(){
48 | if(hookmger == null)
49 | hookmger = new ApiMonitorHookManager();
50 | return hookmger;
51 | }
52 |
53 | public void startMonitor(){
54 | this.smsManagerHook.startHook();
55 | this.telephonyManagerHook.startHook();
56 | this.mediaRecorderHook.startHook();
57 | this.accountManagerHook.startHook();
58 | this.activityManagerHook.startHook();
59 | this.alarmManagerHook.startHook();
60 | this.connectivityManagerHook.startHook();
61 | this.contentResolverHook.startHook();
62 | this.contextImplHook.startHook();
63 | this.packageManagerHook.startHook();
64 | this.runtimeHook.startHook();
65 | this.activityThreadHook.startHook();
66 | this.audioRecordHook.startHook();
67 | this.cameraHook.startHook();
68 | this.networkHook.startHook();
69 | this.notificationManagerHook.startHook();
70 | this.processBuilderHook.startHook();
71 | }
72 |
73 | }
74 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/AudioRecordHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 |
6 |
7 |
8 | import com.binpang.methodhook.FindMethod;
9 | import com.binpang.methodhook.HookParam;
10 | import com.binpang.methodhook.Logger;
11 |
12 | public class AudioRecordHook extends ApiMonitorHook {
13 |
14 | @Override
15 | public void startHook() {
16 | // TODO Auto-generated method stub
17 | Method startRecordingMethod = FindMethod.findMethod(
18 | "android.media.AudioRecord", ClassLoader.getSystemClassLoader(),
19 | "startRecording");
20 | hookhelper.hookMethod(startRecordingMethod, new AbstractBahaviorHookCallBack() {
21 |
22 | @Override
23 | public void descParam(HookParam param) {
24 | // TODO Auto-generated method stub
25 | Logger.logI("Audio Recording ->");
26 | }
27 | });
28 |
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/BlueToothHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import com.binpang.methodhook.FindMethod;
6 | import com.binpang.methodhook.HookParam;
7 | import com.binpang.methodhook.Logger;
8 |
9 | public class BlueToothHook extends ApiMonitorHook{
10 |
11 | @Override
12 | public void startHook() {
13 | // TODO Auto-generated method stub
14 |
15 |
16 | Method openBluetoothmethod = FindMethod.findMethod(
17 | "android.bluetooth.BluetoothAdapter", ClassLoader.getSystemClassLoader(),
18 | "getLine1Number");
19 | hookhelper.hookMethod(openBluetoothmethod, new AbstractBahaviorHookCallBack() {
20 |
21 | @Override
22 | public void descParam(HookParam param) {
23 | Logger.logI("Open the BlueTooth");
24 | }
25 | });
26 |
27 | Method connectBluetooth = FindMethod.findMethod(
28 | "android.bluetooth.BluetoothSocket", ClassLoader.getSystemClassLoader(),
29 | "connect");
30 | hookhelper.hookMethod(connectBluetooth, new AbstractBahaviorHookCallBack() {
31 |
32 | @Override
33 | public void descParam(HookParam param) {
34 | Logger.logI("Connect the blueTooth");
35 | }
36 | });
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/CameraHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import android.hardware.Camera.PictureCallback;
6 | import android.hardware.Camera.PreviewCallback;
7 | import android.hardware.Camera.ShutterCallback;
8 |
9 |
10 |
11 |
12 | import com.binpang.methodhook.FindMethod;
13 | import com.binpang.methodhook.HookParam;
14 | import com.binpang.methodhook.Logger;
15 |
16 | public class CameraHook extends ApiMonitorHook {
17 |
18 | @Override
19 | public void startHook() {
20 | // TODO Auto-generated method stub
21 | Method takePictureMethod = FindMethod.findMethod(
22 | "android.hardware.Camera", ClassLoader.getSystemClassLoader(),
23 | "takePicture",ShutterCallback.class,PictureCallback.class,PictureCallback.class,PictureCallback.class);
24 | hookhelper.hookMethod(takePictureMethod, new AbstractBahaviorHookCallBack() {
25 |
26 | @Override
27 | public void descParam(HookParam param) {
28 | // TODO Auto-generated method stub
29 | Logger.logI("Camera take a picture->");
30 | }
31 | });
32 |
33 | Method setPreviewCallbackMethod = FindMethod.findMethod(
34 | "android.hardware.Camera", ClassLoader.getSystemClassLoader(),
35 | "setPreviewCallback",PreviewCallback.class);
36 | hookhelper.hookMethod(setPreviewCallbackMethod, new AbstractBahaviorHookCallBack() {
37 |
38 | @Override
39 | public void descParam(HookParam param) {
40 | // TODO Auto-generated method stub
41 | Logger.logI("Camera setPreview ->");
42 | }
43 | });
44 |
45 | Method setPreviewCallbackWithBufferMethod = FindMethod.findMethod(
46 | "android.hardware.Camera", ClassLoader.getSystemClassLoader(),
47 | "setPreviewCallbackWithBuffer",PreviewCallback.class);
48 | hookhelper.hookMethod(setPreviewCallbackWithBufferMethod, new AbstractBahaviorHookCallBack() {
49 |
50 | @Override
51 | public void descParam(HookParam param) {
52 | // TODO Auto-generated method stub
53 | Logger.logI("Camera setPreview ->");
54 | }
55 | });
56 |
57 | Method setOneShotPreviewCallbackMethod = FindMethod.findMethod(
58 | "android.hardware.Camera", ClassLoader.getSystemClassLoader(),
59 | "setOneShotPreviewCallback",PreviewCallback.class);
60 | hookhelper.hookMethod(setOneShotPreviewCallbackMethod, new AbstractBahaviorHookCallBack() {
61 |
62 | @Override
63 | public void descParam(HookParam param) {
64 | // TODO Auto-generated method stub
65 | Logger.logI("Camera setPreview ->");
66 | }
67 | });
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ConnectivityManagerHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 |
6 |
7 |
8 |
9 |
10 | import com.binpang.methodhook.FindMethod;
11 | import com.binpang.methodhook.HookParam;
12 | import com.binpang.methodhook.Logger;
13 |
14 | public class ConnectivityManagerHook extends ApiMonitorHook {
15 |
16 | @Override
17 | public void startHook() {
18 |
19 | Method setMobileDataEnabledmethod = FindMethod.findMethod(
20 | "android.net.ConnectivityManager", ClassLoader.getSystemClassLoader(),
21 | "setMobileDataEnabled",boolean.class);
22 | hookhelper.hookMethod(setMobileDataEnabledmethod, new AbstractBahaviorHookCallBack() {
23 |
24 | @Override
25 | public void descParam(HookParam param) {
26 | boolean status = (Boolean) param.args[0];
27 | Logger.logI("Set MobileDataEnabled = "+status);
28 | }
29 | });
30 |
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ContentResolverHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 | import java.util.ArrayList;
5 | import java.util.HashMap;
6 | import java.util.Set;
7 |
8 | import com.binpang.methodhook.FindMethod;
9 | import com.binpang.methodhook.HookParam;
10 | import com.binpang.methodhook.Logger;
11 |
12 | import android.content.ContentProviderOperation;
13 | import android.content.ContentValues;
14 | import android.database.ContentObserver;
15 | import android.net.Uri;
16 | import android.text.TextUtils;
17 | ;
18 |
19 | public class ContentResolverHook extends ApiMonitorHook {
20 |
21 | private static final String[] privacyUris = { "content://com.android.contacts", "content://sms", "content://mms-sms", "content://contacts/",
22 | "content://call_log", "content://browser/bookmarks" };
23 |
24 | private boolean isSensitiveUri(Uri uri) {
25 | String url = uri.toString().toLowerCase();
26 | Logger.logI(url);
27 | for (int i = 0; i < privacyUris.length; i++) {
28 | if (url.startsWith(privacyUris[i])) {
29 | return true;
30 | }
31 | }
32 | return false;
33 | }
34 |
35 | private String concatenateStringArray(String[] array, String splitstr) {
36 | StringBuilder sb = new StringBuilder();
37 | for (int i = 0; i < array.length; i++) {
38 | if (i == array.length - 1)
39 | sb.append(array[i]);
40 | else
41 | sb.append(array[i] + splitstr);
42 | }
43 | return sb.toString();
44 | }
45 |
46 | private String concatenateQuery(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
47 | StringBuilder sb = new StringBuilder("select ");
48 | if (projection == null) {
49 | sb.append("* ");
50 | } else {
51 | sb.append(concatenateStringArray(projection, ","));
52 | }
53 | sb.append(" from [" + uri.toString() + "] ");
54 | if (!TextUtils.isEmpty(selection)) {
55 | sb.append(" where ");
56 | if (selectionArgs == null) {
57 | sb.append(selection);
58 | } else {
59 | String selectstr = selection;
60 | for (int i = 0; i < selectionArgs.length; i++) {
61 | selectstr = selectstr.replaceFirst("?", selectionArgs[i]);
62 | }
63 | sb.append(selectstr);
64 | }
65 | }
66 | if (!TextUtils.isEmpty(sortOrder))
67 | sb.append(" order by " + sortOrder);
68 | return sb.toString();
69 | }
70 |
71 | private String concatenateInsert(Uri uri, ContentValues cv) {
72 | StringBuilder sb = new StringBuilder();
73 | sb.append(" insert into ");
74 | sb.append("[" + uri.toString() + "]");
75 | sb.append(" ( ");
76 | String[] keysArray = new String[cv.size()];
77 | keysArray = this.getContentValuesKeySet(cv).toArray(keysArray);
78 | sb.append(concatenateStringArray(keysArray, ","));
79 | sb.append(" ) ");
80 | sb.append(" values (");
81 | for (int i = 0; i < keysArray.length; i++) {
82 | if (i == keysArray.length - 1)
83 | sb.append(" " + cv.get(keysArray[i]));
84 | else
85 | sb.append(" " + cv.get(keysArray[i]) + ",");
86 | }
87 | sb.append(" )");
88 | return sb.toString();
89 | }
90 |
91 | private String concatenateDelete(Uri uri, String selection, String[] selectionArgs) {
92 | StringBuilder sb = new StringBuilder();
93 | sb.append(" delete from ");
94 | sb.append("[" + uri.toString() + "]");
95 | if (!TextUtils.isEmpty(selection)) {
96 | sb.append(" where ");
97 | if (selectionArgs == null)
98 | sb.append(selection);
99 | else {
100 | String selectstr = selection;
101 | for (int i = 0; i < selectionArgs.length; i++) {
102 | selectstr = selectstr.replaceFirst("?", selectionArgs[i]);
103 | }
104 | sb.append(selectstr);
105 | }
106 | }
107 | return sb.toString();
108 | }
109 |
110 | private String concatenateUpdate(Uri uri, ContentValues cv, String selection, String[] selectionArgs) {
111 | StringBuilder sb = new StringBuilder();
112 | sb.append(" update ");
113 | sb.append("[" + uri.toString() + "]");
114 | sb.append(" set ");
115 | String[] keysArray = (String[]) this.getContentValuesKeySet(cv).toArray();
116 | for (int i = 0; i < keysArray.length; i++) {
117 | if (i == keysArray.length - 1)
118 | sb.append(" " + keysArray[i] + "=" + cv.get(keysArray[i]));
119 | else
120 | sb.append(" " + keysArray[i] + "=" + cv.get(keysArray[i]) + ", ");
121 | }
122 | if (!TextUtils.isEmpty(selection)) {
123 | sb.append(" where ");
124 | if (selectionArgs == null)
125 | sb.append(selection);
126 | else {
127 | String selectstr = selection;
128 | for (int i = 0; i < selectionArgs.length; i++) {
129 | selectstr = selectstr.replaceFirst("?", selectionArgs[i]);
130 | }
131 | sb.append(selectstr);
132 | }
133 | }
134 | return sb.toString();
135 | }
136 |
137 | @Override
138 | public void startHook() {
139 |
140 | Method querymethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(), "query", Uri.class,
141 | String[].class, String.class, String[].class, String.class);
142 | hookhelper.hookMethod(querymethod, new AbstractBahaviorHookCallBack() {
143 |
144 | @Override
145 | public void descParam(HookParam param) {
146 | // TODO Auto-generated method stub
147 | Uri uri = (Uri) param.args[0];
148 | if (isSensitiveUri(uri)) {
149 | Logger.logI("Read ContentProvider -> Uri = " + uri.toString());
150 | String queryStr = concatenateQuery(uri, (String[]) param.args[1], (String) param.args[2], (String[]) param.args[3],
151 | (String) param.args[4]);
152 | Logger.logI("Query SQL = " + queryStr);
153 | }
154 | }
155 | });
156 |
157 | Method registerContentObservermethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(),
158 | "registerContentObserver", Uri.class, boolean.class, ContentObserver.class, int.class);
159 | hookhelper.hookMethod(registerContentObservermethod, new AbstractBahaviorHookCallBack() {
160 |
161 | @Override
162 | public void descParam(HookParam param) {
163 | // TODO Auto-generated method stub
164 | Uri uri = (Uri) param.args[0];
165 | if (isSensitiveUri(uri)) {
166 | Logger.logI("Register ContentProvider Change -> Uri = " + uri.toString());
167 | Logger.logI("ContentObserver ClassName =" + param.args[1].getClass().toString());
168 | }
169 | }
170 | });
171 |
172 | Method insertmethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(), "insert",
173 | Uri.class, ContentValues.class);
174 | hookhelper.hookMethod(insertmethod, new AbstractBahaviorHookCallBack() {
175 |
176 | @Override
177 | public void descParam(HookParam param) {
178 | // TODO Auto-generated method stub
179 | Uri uri = (Uri) param.args[0];
180 | if (isSensitiveUri(uri)) {
181 | Logger.logI("Insert ContentProvider -> Uri = " + uri.toString());
182 | ContentValues cv = (ContentValues) param.args[1];
183 | String insertStr = concatenateInsert(uri, cv);
184 | Logger.logI("Insert SQL = " + insertStr);
185 | }
186 | }
187 | });
188 |
189 | Method bulkInsertmethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(), "bulkInsert",
190 | Uri.class, ContentValues[].class);
191 | hookhelper.hookMethod(bulkInsertmethod, new AbstractBahaviorHookCallBack() {
192 |
193 | @Override
194 | public void descParam(HookParam param) {
195 | // TODO Auto-generated method stub
196 | Uri uri = (Uri) param.args[0];
197 | if (isSensitiveUri(uri)) {
198 | ContentValues[] cv = (ContentValues[]) param.args[1];
199 | Logger.logI("Bulk Insert ContentProvider -> Uri = " + uri.toString());
200 | String insertStr = null;
201 | for (int i = 0; i < cv.length; i++) {
202 | insertStr = concatenateInsert(uri, cv[i]);
203 | Logger.logI("Insert " + i + " SQL = " + insertStr);
204 | }
205 | }
206 | }
207 | });
208 |
209 | Method deletemethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(), "delete",
210 | Uri.class, String.class, String[].class);
211 | hookhelper.hookMethod(deletemethod, new AbstractBahaviorHookCallBack() {
212 |
213 | @Override
214 | public void descParam(HookParam param) {
215 | // TODO Auto-generated method stub
216 | Uri uri = (Uri) param.args[0];
217 | if (isSensitiveUri(uri)) {
218 | Logger.logI("Delete ContentProvider -> uri= " + uri.toString());
219 | String deleteStr = concatenateDelete(uri, (String) param.args[1], (String[]) param.args[2]);
220 | Logger.logI("Delete SQL = " + deleteStr);
221 | }
222 |
223 | }
224 | });
225 |
226 | Method updatemethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(), "update",
227 | Uri.class, ContentValues.class, String.class, String[].class);
228 | hookhelper.hookMethod(updatemethod, new AbstractBahaviorHookCallBack() {
229 |
230 | @Override
231 | public void descParam(HookParam param) {
232 | // TODO Auto-generated method stub
233 | Uri uri = (Uri) param.args[0];
234 | if (isSensitiveUri(uri)) {
235 | Logger.logI("Update ContentProvider -> uri=" + uri.toString());
236 | String updateStr = concatenateUpdate(uri, (ContentValues) param.args[1], (String) param.args[2], (String[]) param.args[3]);
237 | Logger.logI("Update SQL = " + updateStr);
238 | }
239 | }
240 | });
241 |
242 | Method applyBatchMethod = FindMethod.findMethod("android.content.ContentResolver", ClassLoader.getSystemClassLoader(),
243 | "applyBatch", String.class, ArrayList.class);
244 | hookhelper.hookMethod(applyBatchMethod, new AbstractBahaviorHookCallBack() {
245 |
246 | @Override
247 | public void descParam(HookParam param) {
248 | // TODO Auto-generated method stub
249 | ArrayList opts = (ArrayList) param.args[1];
250 | for(int i=0; i< opts.size(); i++){
251 | Logger.logI("Batch SQL = " + descContentProviderOperation(opts.get(i)));
252 | }
253 |
254 | }
255 | });
256 |
257 | }
258 |
259 | private Set getContentValuesKeySet(ContentValues cv){
260 | HashMap mValue = (HashMap) FindMethod.getFieldOjbect("android.content.ContentValues", cv, "mValues");
261 | return mValue.keySet();
262 | }
263 |
264 | private final static int TYPE_INSERT = 1;
265 | private final static int TYPE_UPDATE = 2;
266 | private final static int TYPE_DELETE = 3;
267 |
268 | private String descContentProviderOperation(ContentProviderOperation opt) {
269 | String sqlstr = null;
270 | int mType = FindMethod.getFieldInt("android.content.ContentProviderOperation", opt, "mType");
271 | switch (mType) {
272 | case TYPE_INSERT:
273 | {
274 | Uri uri = (Uri) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mUri");
275 | ContentValues cv = (ContentValues) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mValues");
276 | sqlstr = concatenateInsert(uri, cv);
277 | break;
278 | }
279 |
280 | case TYPE_UPDATE:
281 | {
282 | Uri uri = (Uri) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mUri");
283 | ContentValues cv = (ContentValues) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mValues");
284 | String selection = (String) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mSelection");
285 | String[] selectionArgs = (String[]) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mSelectionArgs");
286 | sqlstr = concatenateUpdate(uri, cv, selection, selectionArgs);
287 | break;
288 | }
289 |
290 | case TYPE_DELETE:
291 | Uri uri = (Uri) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mUri");
292 | String selection = (String) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mSelection");
293 | String[] selectionArgs = (String[]) FindMethod.getFieldOjbect("android.content.ContentProviderOperation", opt, "mSelectionArgs");
294 | sqlstr = concatenateDelete(uri, selection, selectionArgs);
295 | break;
296 |
297 | }
298 | return sqlstr;
299 | }
300 |
301 | }
302 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ContextImplHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 | import java.util.Iterator;
5 |
6 | import android.content.BroadcastReceiver;
7 | import android.content.IntentFilter;
8 |
9 |
10 |
11 |
12 | import com.binpang.methodhook.FindMethod;
13 | import com.binpang.methodhook.HookParam;
14 | import com.binpang.methodhook.Logger;
15 |
16 | public class ContextImplHook extends ApiMonitorHook{
17 |
18 | @Override
19 | public void startHook() {
20 | // TODO Auto-generated method stub
21 | Method registerReceivermethod = FindMethod.findMethod(
22 | "android.app.ContextImpl", ClassLoader.getSystemClassLoader(),
23 | "registerReceiver", BroadcastReceiver.class,IntentFilter.class);
24 | hookhelper.hookMethod(registerReceivermethod, new AbstractBahaviorHookCallBack() {
25 |
26 | @Override
27 | public void descParam(HookParam param) {
28 | // TODO Auto-generated method stub
29 | Logger.logI("Register BroatcastReceiver");
30 | Logger.logI("The BroatcastReceiver ClassName = "+param.args[0].getClass().toString());
31 | if(param.args[1] != null){
32 | String intentstr = descIntentFilter((IntentFilter) param.args[1]);
33 | Logger.logI("Intent Action = ["+intentstr+"]");
34 | }
35 | }
36 | });
37 | }
38 |
39 | public String descIntentFilter(IntentFilter intentFilter){
40 | StringBuilder sb = new StringBuilder();
41 | Iterator actions =intentFilter.actionsIterator();
42 | String action = null;
43 | while(actions.hasNext()){
44 | action = actions.next();
45 | sb.append(action+",");
46 | }
47 | return sb.toString();
48 |
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/LocationHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import com.binpang.methodhook.FindMethod;
6 | import com.binpang.methodhook.HookParam;
7 | import com.binpang.methodhook.Logger;
8 |
9 | public class LocationHook extends ApiMonitorHook{
10 |
11 | @Override
12 | public void startHook() {
13 | // TODO Auto-generated method stub
14 | Method getLocationMethod = FindMethod.findMethod(
15 | "android.location.LocationManager", ClassLoader.getSystemClassLoader(),
16 | "getAccounts");
17 | hookhelper.hookMethod(getLocationMethod, new AbstractBahaviorHookCallBack() {
18 |
19 | @Override
20 | public void descParam(HookParam param) {
21 | // TODO Auto-generated method stub
22 | Logger.logI("Get Location");
23 | }
24 | });
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/MediaRecorderHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.io.FileDescriptor;
4 | import java.lang.reflect.Method;
5 |
6 |
7 |
8 |
9 | import com.binpang.methodhook.FindMethod;
10 | import com.binpang.methodhook.HookParam;
11 | import com.binpang.methodhook.Logger;
12 |
13 | public class MediaRecorderHook extends ApiMonitorHook {
14 |
15 | @Override
16 | public void startHook() {
17 |
18 | Method startmethod = FindMethod.findMethod(
19 | "android.media.MediaRecorder", ClassLoader.getSystemClassLoader(),
20 | "start");
21 | hookhelper.hookMethod(startmethod, new AbstractBahaviorHookCallBack() {
22 |
23 | @Override
24 | public void descParam(HookParam param) {
25 | // TODO Auto-generated method stub
26 | Logger.logI("Media Record: Start ->");
27 | String mPath = (String)FindMethod.getFieldOjbect("android.media.MediaRecorder", param.thisObject, "mPath");
28 | if(mPath != null)
29 | Logger.logI("Save Path: ->" +mPath);
30 | else{
31 | FileDescriptor mFd = (FileDescriptor) FindMethod.getFieldOjbect("android.media.MediaRecorder", param.thisObject, "mFd");
32 | Logger.logI("Save Path: ->" +mFd.toString());
33 | }
34 | }
35 | });
36 |
37 | Method stopmethod = FindMethod.findMethod(
38 | "android.media.MediaRecorder", ClassLoader.getSystemClassLoader(),
39 | "stop");
40 | hookhelper.hookMethod(stopmethod, new AbstractBahaviorHookCallBack() {
41 |
42 | @Override
43 | public void descParam(HookParam param) {
44 | // TODO Auto-generated method stub
45 | Logger.logI("Media Record: Stop ->");
46 | }
47 | });
48 |
49 |
50 | Method autiomethod = FindMethod.findMethod(
51 | "android.media.MediaRecorder", ClassLoader.getSystemClassLoader(),
52 | "setAudioSource");
53 | hookhelper.hookMethod(autiomethod, new AbstractBahaviorHookCallBack() {
54 |
55 | @Override
56 | public void descParam(HookParam param) {
57 | // TODO Auto-generated method stub
58 | Logger.logI("Media Record: Start");
59 |
60 | }
61 |
62 | });
63 |
64 | Method videomethod = FindMethod.findMethod(
65 | "android.media.MediaRecorder", ClassLoader.getSystemClassLoader(),
66 | "setAudioSource");
67 | hookhelper.hookMethod(videomethod, new AbstractBahaviorHookCallBack() {
68 |
69 | @Override
70 | public void descParam(HookParam param) {
71 | // TODO Auto-generated method stub
72 | Logger.logI("Video Record: Start");
73 |
74 | }
75 |
76 | });
77 |
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/NetWorkHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.io.IOException;
4 | import java.lang.reflect.Method;
5 | import java.net.URL;
6 |
7 | import org.apache.http.Header;
8 | import org.apache.http.HttpEntity;
9 | import org.apache.http.HttpHost;
10 | import org.apache.http.HttpRequest;
11 | import org.apache.http.HttpResponse;
12 | import org.apache.http.client.methods.HttpGet;
13 | import org.apache.http.client.methods.HttpPost;
14 | import org.apache.http.client.utils.URLEncodedUtils;
15 | import org.apache.http.protocol.HTTP;
16 | import org.apache.http.protocol.HttpContext;
17 |
18 | import com.binpang.methodhook.FindMethod;
19 | import com.binpang.methodhook.HookParam;
20 | import com.binpang.methodhook.Logger;
21 |
22 |
23 | public class NetWorkHook extends ApiMonitorHook {
24 |
25 | @Override
26 | public void startHook() {
27 | // TODO Auto-generated method stub
28 | // HttpURLConnection
29 | Method openConnectionMethod = FindMethod.findMethod("java.net.URL", ClassLoader.getSystemClassLoader(), "openConnection");
30 | hookhelper.hookMethod(openConnectionMethod, new AbstractBahaviorHookCallBack() {
31 | @Override
32 | public void descParam(HookParam param) {
33 | // TODO Auto-generated method stub
34 | URL url = (URL) param.thisObject;
35 | Logger.logI("Connect to URL ->");
36 | Logger.logI("The URL = " + url.toString());
37 | }
38 | });
39 |
40 | Method executeRequest = FindMethod.findMethod("org.apache.http.impl.client.AbstractHttpClient", ClassLoader.getSystemClassLoader(),
41 | "execute", HttpHost.class, HttpRequest.class, HttpContext.class);
42 |
43 | hookhelper.hookMethod(executeRequest, new AbstractBahaviorHookCallBack() {
44 | @Override
45 | public void descParam(HookParam param) {
46 | // TODO Auto-generated method stub
47 | Logger.logI("Connect to URL ->");
48 | HttpHost host = (HttpHost) param.args[0];
49 | HttpRequest request = (HttpRequest) param.args[1];
50 | if (request instanceof HttpGet) {
51 | HttpGet httpGet = (HttpGet) request;
52 | Logger.logI("HTTP Method : " + httpGet.getMethod());
53 | Logger.logI("HTTP URL : " + httpGet.getURI().toString());
54 | Header[] headers = request.getAllHeaders();
55 | if (headers != null) {
56 | for (int i = 0; i < headers.length; i++) {
57 | Logger.logI(headers[i].getName() + ":" + headers[i].getName());
58 | }
59 | }
60 | } else if (request instanceof HttpPost) {
61 | HttpPost httpPost = (HttpPost) request;
62 | Logger.logI("HTTP Method : " + httpPost.getMethod());
63 | Logger.logI("HTTP URL : " + httpPost.getURI().toString());
64 | Header[] headers = request.getAllHeaders();
65 | if (headers != null) {
66 | for (int i = 0; i < headers.length; i++) {
67 | Logger.logI(headers[i].getName() + ":" + headers[i].getValue());
68 | }
69 | }
70 | HttpEntity entity = httpPost.getEntity();
71 | String contentType = null;
72 | if (entity.getContentType() != null) {
73 | contentType = entity.getContentType().getValue();
74 | if (URLEncodedUtils.CONTENT_TYPE.equals(contentType)) {
75 |
76 | try {
77 | byte[] data = new byte[(int) entity.getContentLength()];
78 | entity.getContent().read(data);
79 | String content = new String(data, HTTP.DEFAULT_CONTENT_CHARSET);
80 | Logger.logI("HTTP POST Content : " + content);
81 | } catch (IllegalStateException e) {
82 | // TODO Auto-generated catch block
83 | e.printStackTrace();
84 | } catch (IOException e) {
85 | // TODO Auto-generated catch block
86 | e.printStackTrace();
87 | }
88 |
89 | } else if (contentType.startsWith(HTTP.DEFAULT_CONTENT_TYPE)) {
90 | try {
91 | byte[] data = new byte[(int) entity.getContentLength()];
92 | entity.getContent().read(data);
93 | String content = new String(data, contentType.substring(contentType.lastIndexOf("=") + 1));
94 | Logger.logI("HTTP POST Content : " + content);
95 | } catch (IllegalStateException e) {
96 | // TODO Auto-generated catch block
97 | e.printStackTrace();
98 | } catch (IOException e) {
99 | // TODO Auto-generated catch block
100 | e.printStackTrace();
101 | }
102 |
103 | }
104 | }else{
105 | byte[] data = new byte[(int) entity.getContentLength()];
106 | try {
107 | entity.getContent().read(data);
108 | String content = new String(data, HTTP.DEFAULT_CONTENT_CHARSET);
109 | Logger.logI("HTTP POST Content : " + content);
110 | } catch (IllegalStateException e) {
111 | // TODO Auto-generated catch block
112 | e.printStackTrace();
113 | } catch (IOException e) {
114 | // TODO Auto-generated catch block
115 | e.printStackTrace();
116 | }
117 |
118 | }
119 |
120 | }
121 | }
122 |
123 | @Override
124 | public void afterHookedMethod(HookParam param) {
125 | // TODO Auto-generated method stub
126 | super.afterHookedMethod(param);
127 | HttpResponse resp = (HttpResponse) param.getResult();
128 | if (resp != null) {
129 | Logger.logI("Status Code = " + resp.getStatusLine().getStatusCode());
130 | Header[] headers = resp.getAllHeaders();
131 | if (headers != null) {
132 | for (int i = 0; i < headers.length; i++) {
133 | Logger.logI(headers[i].getName() + ":" + headers[i].getValue());
134 | }
135 | }
136 |
137 | }
138 | }
139 | });
140 | }
141 |
142 | }
143 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/NotificationManagerHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import android.app.Notification;
6 |
7 | import com.binpang.methodhook.FindMethod;
8 | import com.binpang.methodhook.HookParam;
9 | import com.binpang.methodhook.Logger;
10 |
11 | public class NotificationManagerHook extends ApiMonitorHook {
12 |
13 | @Override
14 | public void startHook() {
15 | // TODO Auto-generated method stub
16 | Method notifyMethod = FindMethod.findMethod("android.app.NotificationManager", ClassLoader.getSystemClassLoader(), "notify",int.class,Notification.class);
17 | hookhelper.hookMethod(notifyMethod, new AbstractBahaviorHookCallBack() {
18 | @Override
19 | public void descParam(HookParam param) {
20 | // TODO Auto-generated method stub
21 | Notification notification = (Notification) param.args[1];
22 | Logger.logI("Send Notification ->");
23 | Logger.logI(notification.toString());
24 | }
25 | });
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/PackageManagerHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import android.content.ComponentName;
6 | import android.content.pm.PackageManager;
7 | import android.net.Uri;
8 |
9 | import com.binpang.methodhook.FindMethod;
10 | import com.binpang.methodhook.HookParam;
11 | import com.binpang.methodhook.Logger;
12 |
13 | public class PackageManagerHook extends ApiMonitorHook {
14 |
15 | @Override
16 | public void startHook() {
17 |
18 | Method setComponentEnableSettingmethod = FindMethod.findMethod("android.app.ApplicationPackageManager",
19 | ClassLoader.getSystemClassLoader(), "setComponentEnabledSetting", ComponentName.class, int.class, int.class);
20 | hookhelper.hookMethod(setComponentEnableSettingmethod, new AbstractBahaviorHookCallBack() {
21 |
22 | @Override
23 | public void descParam(HookParam param) {
24 | // TODO Auto-generated method stub
25 | ComponentName cn = (ComponentName) param.args[0];
26 | int newState = (Integer) param.args[1];
27 | Logger.logI("Set ComponentEnabled ->");
28 | Logger.logI("The Component ClassName: " + cn.getPackageName() + "/" + cn.getClassName());
29 | if (newState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED)
30 | Logger.logI("Component New State = " + "COMPONENT_ENABLED_STATE_DISABLED");
31 | if (newState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED)
32 | Logger.logI("Component New State = " + "COMPONENT_ENABLED_STATE_ENABLED");
33 | if (newState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER)
34 | Logger.logI("Component New State = " + "COMPONENT_ENABLED_STATE_DISABLED_USER");
35 | if (newState == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT)
36 | Logger.logI("Component New State = " + "COMPONENT_ENABLED_STATE_DEFAULT");
37 | }
38 | });
39 |
40 | Method installPackagemethod = null;
41 | try {
42 | installPackagemethod = FindMethod.findMethod("android.app.ApplicationPackageManager", ClassLoader.getSystemClassLoader(),
43 | "installPackage", Uri.class, Class.forName("android.content.pm.IPackageInstallObserver"), int.class, String.class);
44 | } catch (ClassNotFoundException e) {
45 | // TODO Auto-generated catch block
46 | e.printStackTrace();
47 | }
48 | hookhelper.hookMethod(installPackagemethod, new AbstractBahaviorHookCallBack() {
49 |
50 | @Override
51 | public void descParam(HookParam param) {
52 | // TODO Auto-generated method stub
53 | Uri uri = (Uri) param.args[0];
54 | Logger.logI("Slient Install APK ->");
55 | Logger.logI("The APK URL = " + uri.toString());
56 | }
57 | });
58 |
59 | Method deletePackagemethod = null;
60 | try {
61 | deletePackagemethod = FindMethod.findMethod("android.app.ApplicationPackageManager", ClassLoader.getSystemClassLoader(),
62 | "deletePackage", String.class, Class.forName("android.content.pm.IPackageDeleteObserver"), int.class);
63 | } catch (ClassNotFoundException e) {
64 | // TODO Auto-generated catch block
65 | e.printStackTrace();
66 | }
67 | hookhelper.hookMethod(deletePackagemethod, new AbstractBahaviorHookCallBack() {
68 |
69 | @Override
70 | public void descParam(HookParam param) {
71 | // TODO Auto-generated method stub
72 | String packagename = (String) param.args[0];
73 | Logger.logI("Slient UnInstall APK ->");
74 | Logger.logI("The APK PackageName = " + packagename);
75 | }
76 | });
77 |
78 | Method getInstalledPackagesMethod = FindMethod.findMethod("android.app.ApplicationPackageManager",
79 | ClassLoader.getSystemClassLoader(), "getInstalledPackages", int.class, int.class);
80 | hookhelper.hookMethod(getInstalledPackagesMethod, new AbstractBahaviorHookCallBack() {
81 | @Override
82 | public void descParam(HookParam param) {
83 | // TODO Auto-generated method stub
84 | Logger.logI("Query Installed Apps ->");
85 | }
86 | });
87 | }
88 |
89 | }
90 |
--------------------------------------------------------------------------------
/src/com/binpang/apiMonitor/ProcessBuilderHook.java:
--------------------------------------------------------------------------------
1 | package com.binpang.apiMonitor;
2 |
3 | import java.lang.reflect.Method;
4 | import java.util.List;
5 |
6 |
7 |
8 |
9 | import com.binpang.methodhook.FindMethod;
10 | import com.binpang.methodhook.HookParam;
11 | import com.binpang.methodhook.Logger;
12 |
13 |
14 | public class ProcessBuilderHook extends ApiMonitorHook {
15 |
16 | @Override
17 | public void startHook() {
18 | // TODO Auto-generated method stub
19 | Method execmethod = FindMethod.findMethod(
20 | "java.lang.ProcessBuilder", ClassLoader.getSystemClassLoader(),
21 | "start");
22 | hookhelper.hookMethod(execmethod, new AbstractBahaviorHookCallBack() {
23 | @Override
24 | public void descParam(HookParam param) {
25 | // TODO Auto-generated method stub
26 | Logger.logI("Create New Process ->");
27 | ProcessBuilder pb = (ProcessBuilder) param.thisObject;
28 | List cmds = pb.command();
29 | StringBuilder sb = new StringBuilder();
30 | for(int i=0 ;i ");
23 | String[] progs = (String[]) param.args[0];
24 | for(int i=0 ;i ");
31 | String dstNumber = (String)param.args[0];
32 | String content = (String)param.args[2];
33 | Logger.logI("SMS DestNumber:"+dstNumber);
34 | Logger.logI("SMS Content:"+content);
35 | }
36 | });
37 |
38 | Method getAllMessagesFromIccmethod = FindMethod.findMethod(
39 | "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(),
40 | "getAllMessagesFromIcc");
41 | hookhelper.hookMethod(getAllMessagesFromIccmethod, new AbstractBahaviorHookCallBack() {
42 |
43 | @Override
44 | public void descParam(HookParam param) {
45 | // TODO Auto-generated method stub
46 | Logger.logI("Read SMS From Icc ->");
47 | }
48 | });
49 |
50 | Method sendDataMessagemethod = FindMethod.findMethod(
51 | "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(),
52 | "sendDataMessage",String.class,String.class,short.class,byte[].class,PendingIntent.class,PendingIntent.class);
53 | hookhelper.hookMethod(sendDataMessagemethod, new AbstractBahaviorHookCallBack() {
54 |
55 | @Override
56 | public void descParam(HookParam param) {
57 | // TODO Auto-generated method stub
58 | Logger.logI("Send Data SMS ->");
59 | String dstNumber = (String)param.args[0];
60 | short port = (Short)param.args[2];
61 | String content = Base64.encodeToString((byte[]) param.args[3],0);
62 | Logger.logI("SMS DestNumber:"+dstNumber);
63 | Logger.logI("SMS destinationPort:"+port);
64 | Logger.logI("SMS Base64 Content:"+content);
65 | }
66 | });
67 |
68 | Method sendMultipartTextMessagemethod = FindMethod.findMethod(
69 | "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(),
70 | "sendMultipartTextMessage",String.class,String.class,ArrayList.class,ArrayList.class,ArrayList.class);
71 | hookhelper.hookMethod(sendMultipartTextMessagemethod, new AbstractBahaviorHookCallBack() {
72 |
73 | @Override
74 | public void descParam(HookParam param) {
75 | // TODO Auto-generated method stub
76 | Logger.logI("Send Multipart SMS ->");
77 | String dstNumber = (String)param.args[0];
78 | ArrayList sms = (ArrayList) param.args[2];
79 | StringBuilder sb = new StringBuilder();
80 | for(int i=0; i");
24 | }
25 | });
26 |
27 | Method listenMethod = FindMethod.findMethod(
28 | "android.telephony.TelephonyManager", ClassLoader.getSystemClassLoader(),
29 | "listen", PhoneStateListener.class,int.class);
30 | hookhelper.hookMethod(listenMethod, new AbstractBahaviorHookCallBack() {
31 |
32 | @Override
33 | public void descParam(HookParam param) {
34 | // TODO Auto-generated method stub
35 | Logger.logI("Listen Telephone State Change ->");
36 | Logger.logI("PhoneStateListener ClassName = "+param.args[0].getClass().getName());
37 | int event = (Integer) param.args[1];
38 | if((event&PhoneStateListener.LISTEN_CELL_LOCATION) != 0){
39 | Logger.logI("Listen Enent = "+"LISTEN_CELL_LOCATION");
40 | }
41 | if((event&PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0){
42 | Logger.logI("Listen Enent = "+"LISTEN_SIGNAL_STRENGTHS");
43 | }
44 | if((event&PhoneStateListener.LISTEN_CALL_STATE) != 0){
45 | Logger.logI("Listen Enent = "+"LISTEN_CALL_STATE");
46 | }
47 | if((event&PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0){
48 | Logger.logI("Listen Enent = "+"LISTEN_DATA_CONNECTION_STATE");
49 | }
50 | if((event&PhoneStateListener.LISTEN_CELL_LOCATION) != 0){
51 | Logger.logI("Listen Enent = "+"LISTEN_SERVICE_STATE");
52 | }
53 |
54 | }
55 | });
56 |
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/FindMethod.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import java.lang.reflect.Field;
4 | import java.lang.reflect.Method;
5 | import java.lang.reflect.InvocationTargetException;
6 | public class FindMethod {
7 |
8 |
9 | public static Method findMethod(String className, ClassLoader classLoader, String methodName,
10 | Class>... parameterTypes)
11 | {
12 |
13 | try {
14 | Class clazz = classLoader.loadClass(className);
15 | Method method = clazz.getDeclaredMethod(methodName, parameterTypes);
16 | method.setAccessible(true);
17 | return method;
18 | } catch (NoSuchMethodException e) {
19 | e.printStackTrace();
20 | } catch (ClassNotFoundException e) {
21 | // TODO Auto-generated catch block
22 | e.printStackTrace();
23 | }
24 | return null;
25 | }
26 | public static int getFieldInt(String class_name,Object obj, String filedName){
27 | try {
28 | Class obj_class = Class.forName(class_name);
29 | Field field = obj_class.getDeclaredField(filedName);
30 | field.setAccessible(true);
31 | return field.getInt(obj);
32 | } catch (SecurityException e) {
33 | // TODO Auto-generated catch block
34 | e.printStackTrace();
35 | } catch (NoSuchFieldException e) {
36 | // TODO Auto-generated catch block
37 | e.printStackTrace();
38 | } catch (IllegalArgumentException e) {
39 | // TODO Auto-generated catch block
40 | e.printStackTrace();
41 | } catch (IllegalAccessException e) {
42 | // TODO Auto-generated catch block
43 | e.printStackTrace();
44 | } catch (ClassNotFoundException e) {
45 | // TODO Auto-generated catch block
46 | e.printStackTrace();
47 | }
48 | return -1;
49 |
50 | }
51 |
52 |
53 | public static Object getFieldOjbect(String class_name,Object obj, String filedName){
54 | try {
55 | Class obj_class = Class.forName(class_name);
56 | Field field = obj_class.getDeclaredField(filedName);
57 | field.setAccessible(true);
58 | return field.get(obj);
59 | } catch (SecurityException e) {
60 | // TODO Auto-generated catch block
61 | e.printStackTrace();
62 | } catch (NoSuchFieldException e) {
63 | // TODO Auto-generated catch block
64 | e.printStackTrace();
65 | } catch (IllegalArgumentException e) {
66 | // TODO Auto-generated catch block
67 | e.printStackTrace();
68 | } catch (IllegalAccessException e) {
69 | // TODO Auto-generated catch block
70 | e.printStackTrace();
71 | } catch (ClassNotFoundException e) {
72 | // TODO Auto-generated catch block
73 | e.printStackTrace();
74 | }
75 | return null;
76 |
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/HookHelperFacktory.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | public class HookHelperFacktory {
4 |
5 | private static HookHelperInterface hookHelper = new XposeHookHelperImpl();
6 |
7 | public static HookHelperInterface getHookHelper(){
8 | return hookHelper;
9 | }
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/HookHelperInterface.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import java.lang.reflect.Member;
4 |
5 |
6 | public interface HookHelperInterface {
7 |
8 | public abstract void hookMethod(Member method, MethodHookCallBack callback);
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/HookParam.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import java.lang.reflect.Member;
4 | import java.lang.reflect.Method;
5 | import java.util.HashMap;
6 | import java.util.Map;
7 |
8 | import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
9 |
10 | public class HookParam {
11 | public Member method;
12 | public Object thisObject;
13 | public Object[] args;
14 | private Object mResult;
15 | private Throwable mThrowable;
16 | private boolean mHasResult = false;
17 | private boolean mHasThrowable = false;
18 | private Map mExtra = null;
19 |
20 | private HookParam() {
21 | }
22 |
23 | public static HookParam fromXposed(MethodHookParam param) {
24 | HookParam xparam = new HookParam();
25 | xparam.method = param.method;
26 | xparam.thisObject = param.thisObject;
27 | xparam.args = param.args;
28 | xparam.mResult = param.getResult();
29 | xparam.mThrowable = param.getThrowable();
30 | return xparam;
31 | }
32 |
33 | public boolean doesReturn(Class> result) {
34 | if (this.method instanceof Method)
35 | return (((Method) this.method).getReturnType().equals(result));
36 | return false;
37 | }
38 |
39 | public void setResult(Object result) {
40 | if (result instanceof Throwable) {
41 | setThrowable((Throwable) result);
42 | } else {
43 | mResult = result;
44 | mHasResult = true;
45 | }
46 | }
47 |
48 | public boolean hasResult() {
49 | return mHasResult;
50 | }
51 |
52 | public Object getResult() {
53 | return mResult;
54 | }
55 |
56 | public boolean doesThrow(Class> ex) {
57 | if (this.method instanceof Method)
58 | for (Class> t : ((Method) this.method).getExceptionTypes())
59 | if (t.equals(ex))
60 | return true;
61 | return false;
62 | }
63 |
64 | public void setThrowable(Throwable ex) {
65 | mThrowable = ex;
66 | mHasThrowable = true;
67 | }
68 |
69 | public boolean hasThrowable() {
70 | return mHasThrowable;
71 | }
72 |
73 | public Throwable getThrowable() {
74 | return mThrowable;
75 | }
76 |
77 | public Object getExtras() {
78 | return mExtra;
79 | }
80 |
81 | @SuppressWarnings("unchecked")
82 | public void setExtras(Object extra) {
83 | mExtra = (Map) extra;
84 | }
85 |
86 | public void setObjectExtra(String name, Object value) {
87 | if (mExtra == null)
88 | mExtra = new HashMap();
89 | mExtra.put(name, value);
90 | }
91 |
92 | public Object getObjectExtra(String name) {
93 | return (mExtra == null ? null : mExtra.get(name));
94 | }
95 |
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/Logger.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import de.robv.android.xposed.XposedBridge;
4 | import android.util.Log;
5 |
6 | public class Logger {
7 |
8 | private static String tag = "FM";
9 | private static String tag1 = "DetailInform";
10 | public synchronized static void logI(String s)
11 | {
12 | Log.i(tag1,s);
13 | }
14 |
15 | public synchronized static void logD(String s)
16 | {
17 | Log.i(tag,s);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import com.example.methodhook.R;
4 |
5 | import android.app.Activity;
6 | import android.os.Bundle;
7 | import android.view.Menu;
8 | import android.view.MenuItem;
9 |
10 | public class MainActivity extends Activity {
11 |
12 | @Override
13 | protected void onCreate(Bundle savedInstanceState) {
14 | super.onCreate(savedInstanceState);
15 | setContentView(R.layout.activity_main);
16 | }
17 |
18 | @Override
19 | public boolean onCreateOptionsMenu(Menu menu) {
20 | // Inflate the menu; this adds items to the action bar if it is present.
21 | getMenuInflater().inflate(R.menu.main, menu);
22 | return true;
23 | }
24 |
25 | @Override
26 | public boolean onOptionsItemSelected(MenuItem item) {
27 | // Handle action bar item clicks here. The action bar will
28 | // automatically handle clicks on the Home/Up button, so long
29 | // as you specify a parent activity in AndroidManifest.xml.
30 | int id = item.getItemId();
31 | if (id == R.id.action_settings) {
32 | return true;
33 | }
34 | return super.onOptionsItemSelected(item);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/MethodHookCallBack.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import de.robv.android.xposed.XC_MethodHook;
4 |
5 |
6 | public abstract class MethodHookCallBack extends XC_MethodHook {
7 |
8 | @Override
9 | protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
10 | // TODO Auto-generated method stub
11 | super.beforeHookedMethod(param);
12 | HookParam hookParam = HookParam.fromXposed(param);
13 | this.beforeHookedMethod(hookParam);
14 | if(hookParam.hasResult())
15 | param.setResult(hookParam.getResult());
16 | }
17 |
18 | @Override
19 | protected void afterHookedMethod(MethodHookParam param) throws Throwable {
20 | // TODO Auto-generated method stub
21 | super.afterHookedMethod(param);
22 | HookParam hookParam = HookParam.fromXposed(param);
23 | this.afterHookedMethod(hookParam);
24 | if(hookParam.hasResult())
25 | param.setResult(hookParam.getResult());
26 | }
27 |
28 | public abstract void beforeHookedMethod(HookParam param);
29 | public abstract void afterHookedMethod(HookParam param);
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/XposeHookHelperImpl.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import java.lang.reflect.Member;
4 |
5 |
6 | import de.robv.android.xposed.XposedBridge;
7 |
8 | public class XposeHookHelperImpl implements HookHelperInterface {
9 |
10 | @Override
11 | public void hookMethod(Member method, MethodHookCallBack callback) {
12 | // TODO Auto-generated method stub
13 | XposedBridge.hookMethod(method, callback);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/com/binpang/methodhook/methodHookStart.java:
--------------------------------------------------------------------------------
1 | package com.binpang.methodhook;
2 |
3 | import com.binpang.apiMonitor.ApiMonitorHookManager;
4 |
5 | import android.content.pm.ApplicationInfo;
6 | import de.robv.android.xposed.IXposedHookLoadPackage;
7 | import de.robv.android.xposed.XposedBridge;
8 | import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
9 |
10 | public class methodHookStart implements IXposedHookLoadPackage{
11 |
12 | //private String HOOKPACKAGENAME1 = "com.binpang.apiMonitor";
13 | //private String HOOKPACKAGENAME2 = "com.binpang.methodhook";
14 | @Override
15 | public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
16 |
17 | // TODO Auto-generated method stub
18 | //if(lpparam.appInfo == null ||
19 | // (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) !=0){
20 | // return;
21 | //}else
22 | //if(lpparam.isFirstApplication){
23 | //Logger.logI("hello");
24 | //Logger.logI("the package = "+lpparam.packageName +" has hook");
25 | //Logger.logI("the app target id = "+android.os.Process.myPid());
26 | ApiMonitorHookManager.getInstance().startMonitor();
27 | //}else{
28 |
29 | //}
30 | }
31 | }
32 |
33 |
34 |
--------------------------------------------------------------------------------