前言:最近学习android逆向分析用到了Xposed,这里记录在搭建Xposed的流程以及遇到的一些坑。
准备工具
1.AndroidStudio(版本随意)我这里下载是当前最新的。直接到官网上下。
2.夜神模拟器,模拟器应该都无所谓,逍遥的也行,我的模拟器Adnroid版本是5.1.1
3.Xposed框架(装在模拟器上的)XposedInstaller_3.1.5-release-by-AlphaEva.apk
这里才是下载地址哦:链接:https://pan.baidu.com/s/1059hbSkwMgJHoKtLK8MO3Q 提取码:49qz
4.Xposed API,我这里下载的是 api-82.jar,里面还有源码,这个jar使用来放到AndroidStudio里写Hook调用的
好了,准备工作做好我们开始一步一步搭建环境,想想就有点激动
模拟器安装Xposed框架
1.打开夜神模拟器,将你的 XposedInstaller_3.1.5-release-by-AlphaEva.apk 拖到里面来,自己会安装
装好了就如下图
2.我们打开 Xposed Installer ,会弹出一个提示框,不用管它,直接勾选下次不再显示。
3.安装 如下图
3.等待下载
等啊等啊等啊等 我的网速慢,一个漫长的等待,大家可以趁这个时间上个厕所什么的。
4.下载好了,然后安装,安装完了会提示你重启,因为我们是模拟器,所以只能软重启,也就是手动找到你模拟器的重启按钮
5.重启之后打开 Xposed Installer 界面如下
好了到这里 模拟器Xposed 框架就安装完了,接下面配置Android开发环境了有些坑,要特别注意
配置Android开发环境
1.打开Android,新建项目 直接看图
2.选择 add no activity (因为Xposed模块不需要界面),点击next
3.填写你的项目名字,随意就好,点击Finish
4.然后就长这样,给大家放一个大图
5.然后我们切换视图空间,点击Android,选择Project
6.完事之后长这样
7,在app 目录下 创建 lib文件夹,拖进来 之前下载的 api-82.jar
由于AndroidStudio我连文件夹也不会创建,哈哈哈哈。。我真是菜鸡
然后我就直接Ctrl + C 复制 libs ,然后在 app 上面 Ctrl+V 改名为 lib(完美解决。。)
然后就长这样了
当然最后重要的是这一步,选择 api-82.jar 右键 add as library,没有这一步,后面你引入的Xposed 的类AndroidStudio不认识
实话说,这里我也卡了很久,没办法我就是这么菜
打开 AndroidManifest.xml,现在是长这样
然后我们改成这样,里面的 “E第一个“ 名字随便定义,将来在模拟器中Xposed矿浆里面的模块会显示的
其他内容我也不懂,具体大家百度了解一下
添加 compileOnly files('lib/api-82.jar') 代码到,build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
applicationId "com.example.xposedhook"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
compileOnly files('lib/api-82.jar')
}
创建MyHook类,类名随便取(啊啊啊贴图好难受,不过怕跟我一样的菜鸟找不到)
package com.example.xposedhook;
import android.util.Log;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class MyHook implements IXposedHookLoadPackage {
public final static String TAG = "MyXposed";
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log(TAG+"|"+"我抓到你了:"+lpparam.packageName);
}
}
创建 assets 文件夹,在其下面创建 xposed_init 文件
文件内容就一句话,这是Xposed 的入口函数 (我前面竟然傻逼的在后面加了个分号,导致后面一直Class not found)
com.example.xposedhook.MyHook
OK,兄弟们AndroidStudio 的开发环境配置大功告成。哦也!!!!!!
我们开始生成APK然后放到模拟器上面去安装咯咯咯咯
build 项目,生成APK
build 完成找到你的apk 复制到桌面(随便找个地方)
然后 将 apk 丢到 模拟器中,进行安装
装好了会给你提示,然后我们在模拟器中打开 Xposed Installer
点击下图按钮找到 模块 两字,点击
然后就会出现我们写的模块了啊,名字就是我们之前在哪个xml里面写的 “E第一个“
接着我们在右边打钩,提示重启生效
然后我们就重启开效果了
终于完了,写完了,不要贴图了,好爽 好爽(。。好像还有图要贴,重启之后看有没有成功)
重启好了继续打开Xposed Installer
选择 日志 选项
看到了没有输出的日志,完美出来了
上图看不清,我在给张清楚的
over 大结局 !!!!!!
胜利!!!!!!!!