Android笔记-Xposed的使用(Hook登录函数获取用户名密码)
生活随笔
收集整理的這篇文章主要介紹了
Android笔记-Xposed的使用(Hook登录函数获取用户名密码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如這個APP例子:
點擊登錄,Xposed打印:?
對應的Java代碼:
?
這里可以看到其包名為hfdcxy.com.myapplication
函數為check。
Xposed關鍵函數如下:
public class HookUtils implements IXposedHookLoadPackage {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {if(loadPackageParam.packageName.equals("hfdcxy.com.myapplication")){XposedBridge.log("here");XposedHelpers.findAndHookMethod(loadPackageParam.classLoader.loadClass("hfdcxy.com.myapplication.MainActivity"),"check",String.class,String.class,new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);XposedBridge.log("------------beforeHookedMethod start------------");String userName = (String)param.args[0];String password = (String)param.args[1];XposedBridge.log("userName:" + userName + ",password:" + password);XposedBridge.log("------------beforeHookedMethod end------------");}@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);XposedBridge.log("------------afterHookedMethod start------------");String userName = (String)param.args[0];String password = (String)param.args[1];XposedBridge.log("userName:" + userName + ",password:" + password);XposedBridge.log("------------afterHookedMethod end------------");}});}} }?
編寫Xposed模塊的邏輯是這樣的。
1. 添加對應Xposed API jar包,修改build.gradle;
2. 繼承IXposedHookLoadPackage,設置需要Hook的類名,函數名;
3. 新增資源文件,新建xposed_init,內容為繼承IXposedHookLoadPackage的Hook類;
4. AndroidManifest.xml添加xposed相關模塊數據。
如下:
?其中xpose_init內容為:
com.example.myapplication.HookUtilsHookUtils.java:
package com.example.myapplication;import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage;public class HookUtils implements IXposedHookLoadPackage {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {if(loadPackageParam.packageName.equals("hfdcxy.com.myapplication")){XposedBridge.log("here");XposedHelpers.findAndHookMethod(loadPackageParam.classLoader.loadClass("hfdcxy.com.myapplication.MainActivity"),"check",String.class,String.class,new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);XposedBridge.log("------------beforeHookedMethod start------------");String userName = (String)param.args[0];String password = (String)param.args[1];XposedBridge.log("userName:" + userName + ",password:" + password);XposedBridge.log("------------beforeHookedMethod end------------");}@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);XposedBridge.log("------------afterHookedMethod start------------");String userName = (String)param.args[0];String password = (String)param.args[1];XposedBridge.log("userName:" + userName + ",password:" + password);XposedBridge.log("------------afterHookedMethod end------------");}});}} }AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-data android:name="xposedmodule" android:value="true"/><meta-data android:name="xposeddescription" android:value="Xposed Demo"/><meta-data android:name="xposedminversion" android:value="89"/></application></manifest>build.gradle
apply plugin: 'com.android.application'android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "com.example.myapplication"minSdkVersion 22targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}sourceSets {main{assets.srcDirs = ['src/assets']}} }dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')implementation 'androidx.appcompat:appcompat:1.0.2'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'compileOnly files('lib/XposedBridgeAPI-89.jar') }總結
以上是生活随笔為你收集整理的Android笔记-Xposed的使用(Hook登录函数获取用户名密码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-Spring Boot S
- 下一篇: Web前端笔记-element ui中t