如这个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.HookUtils

HookUtils.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登录函数获取用户名密码)相关推荐

  1. logon oracle 密码 用户名_PLSQL自动登录,记住用户名密码日常使用技巧

    配置启动时的登录用户名和密码 这是个有争议的功能,因为记住密码会给带来数据安全的问题. 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Develope ...

  2. 史上最简单的Spring Security教程(二十八):CA登录与默认用户名密码登录共存详细实现及配置

    ​在前面的文章中,我们自定义了一些CA登录相关的类,如 CertificateAuthorityAuthenticationToken.CertificateAuthorityAuthenticati ...

  3. PLSQL自动登录,记住用户名密码日常使用技巧

    https://www.cnblogs.com/Chary/p/No00008F.html 配置启动时的登录用户名和密码 这是个有争议的功能,因为记住密码会给带来数据安全的问题. 但假如是开发用的库, ...

  4. 微信hook——登录界面的账号密码

    Hook方法一: 手机号码登陆,Method跟踪点击登陆事件: 点击事件内容 分析bj方法,有两个string参数,依然最后调用了com.tencent.mm.modelsimple.q,hook这个 ...

  5. ubuntu16.04登录界面输入用户名密码后又回到登录界面

    原因有以下几种: 最好先查看log,即/var/log/Xorg.0.log . 1,磁盘空间不够了. 解决办法:字符界面登录,删除一些文件,腾出一些空间,重启即可. 2,/home/username ...

  6. mysql命令行远程登录时,用户名密码等连接信息配置正确,出现:ERROR 1045 (HY000): Access denied for user ‘xxx'

    1. 现象 使用mysql客户端命令行的方式远程登录mysql服务器时,出现ERROR 1045 (HY000): Access denied for user 'xxx'. 使用mysql客户端远程 ...

  7. 以管理员身份登录系统 分值: 450 以管理员身份登录即可获取通关密码(重置即可,无需登录)

    解密关的第一题. 1.题的来源 昨天做了一个网络安全实验室的一个解密关的第一题. 地址:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a ...

  8. FTP登录时指定用户名密码的方法

    ftp是网络常用命令,但是使用此命令时都必须根据提示交互式的输入用户名和密码,对于希望程序自动执行或者批处理而言很不方便.下面提供两种ftp登陆时指定用户名密码的方法: 1.使用命令ftp://use ...

  9. Android之Xposed框架完全使用指南

    文章目录 Xposed环境搭建 Xposed简介 Xposed原理 Xposed的安装 Xposed插件开发 Xposed插件编写流程 Xposed开发之Hook构造函数 相关API 无参构造函数的h ...

最新文章

  1. ORA-39002 ORA-39070 ORA-29283 ORA-06512 ORA-29283
  2. Objective-C:在类中设置不同协议
  3. Mybatis-Plus 之 人生中荒废的一下午
  4. 联想笔记本Win10 F1-F12失效的解决方法
  5. scala运行包含package文件注意细节
  6. sklearn数据集操作API
  7. 格雷码问题:输出当输入为n时的格雷码
  8. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置
  9. Android--使用Camera拍照
  10. WEBSOCKET协议判断 握手及反馈
  11. 1470. 重新排列数组
  12. mschart mysql_在VB mschart里面可以一个MSCHART同时显示曲线和状图吗?
  13. c语言switch case ppt,C语言-09switch-case多分支开路语句.ppt
  14. java fail fast_Java集合中的fail-fast(快速失败)机制详解
  15. goeasy服务器发送(发布)消息,微信小程序中怎么使用GoEasy实现实时通讯
  16. PHP在线网课问答题库搜索,推荐一个大学mooc网课答案题库在线查询公众号
  17. Python报错:local variable referenced before assignment
  18. 团队协作方法之:高效使用任务故事墙
  19. python提取关键词分类_用Py做文本分析5:关键词提取
  20. 【FLASK】发送QQ邮件

热门文章

  1. C++学习笔记—srand()和rand()
  2. 程序员,你还要迷茫多久?
  3. 企业数字化转型到底是什么?带你一图看懂答案
  4. 继续完善掼蛋游戏 其次说说朋友的情况
  5. 从飞鸽传书口水仗想到的
  6. 让你快乐的21种方法
  7. 用VC写Assembly代码(6)--附录1[堆和栈的区别]
  8. 利用pre-compiled headers技术以加速编译速度(一)
  9. 用线程实现动态改变图标
  10. 支付宝程序员眼中的极致代码和卓越程序员是什么样的?