loading请求处理中...

没有Android基础都能学会的Xposed基础教程

2021-12-02 09:45:30 阅读 11770次 标签: android游戏开发android基础教程 作者: a454466904

0×01 前言

随着手机使用者增多,手机智能化程度提高,各种app应运而生,这些app中不免有些恶意程序,时刻威胁着使用者,对用户的隐私等造成侵犯。究其原因是系统开源导致安全威胁,这次通过学习一个开源框架xposed来了解移动app的安全。

0×02 利用原理

XPOSED的安装器替换安卓系统的app_process文件,从而实现对系统的接管,通过回调模块的方式来达到不用修改APK就能改变其表现行为的目的。该框架比较成熟,对应的模块也非常多,常用的还有模拟地理位置,伪装手机设备信息等,脑洞是非常之大,基本上能想到的都能做到。由于篇幅限制这里介绍一个简短而实用的案例,其他模块可以参考XPOSED官网的模块列表。

0×03 准备工作

Android模拟器、Xposed框架、Android studio 集成开发环境、2个相关api的jar包

0×04 开整

新建工程

没有Android基础都能学会的Xposed基础教程

注意首字符大写

没有Android基础都能学会的Xposed基础教程

选择4.0.3及以上的sdk

没有Android基础都能学会的Xposed基础教程

可以选择没有activity然后自己添加,也可以直接生产个空activity(推荐)

没有Android基础都能学会的Xposed基础教程

首先切换到Project工程结构视图下添加2个api的jar包

没有Android基础都能学会的Xposed基础教程

然后切换回android(也可以直接在project下找)修改Manifest.xml文件

没有Android基础都能学会的Xposed基础教程

修改manifest.xml

没有Android基础都能学会的Xposed基础教程

添加依赖,进入build.gradle(有两个,选择ap目录下的)

没有Android基础都能学会的Xposed基础教程

新建一个文件夹叫assets存放xposed的初始化文件,指定程序入口。

没有Android基础都能学会的Xposed基础教程

Xposed_init

没有Android基础都能学会的Xposed基础教程

模拟器端操作(此实验在模拟器下操作,防止物理机使用xposed过程中变砖)

安装xposed installer拖进去就安装了,不演示。注意要开启手机的root权限,因为使用真机经常会卡死,或者变砖,很麻烦,所以用模拟器。

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

然后重启,注意软重启速度快,看个人喜好,卡死就关机重开,真机卡死后需要进入recovery手动删除xposed模块才可启动。

将androidstudio 和模拟器连接(需要adb,这个自行百度)

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

每次启动运行程序都会让选择使用哪个设备

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

模拟器和环境弄好之后开始实现xposed插件的编写

0×05 插件编写1

没有Android基础都能学会的Xposed基础教程

此代码功能是在xposed中打印日志,日志内容为所以运行过的app的包名

package com.example.administrator.xposedtest; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; /** * Created by Administrator on 2018/2/8. */ public class Tuorial implements IXposedHookLoadPackage{ public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { XposedBridge.log("Loaded app: " + lpparam.packageName); } }

实现效果(注意每次运行后都需要重启虚拟机来更新模块)

没有Android基础都能学会的Xposed基础教程

没有Android基础都能学会的Xposed基础教程

打印了从启动设备时的所有app包名

0×06 插件编写-通过hook实现密码劫持

首先需要写一个简单的登陆界面和跳转界面,如下图 登陆界面

没有Android基础都能学会的Xposed基础教程

登陆成功界面

没有Android基础都能学会的Xposed基础教程

此处引入xposed提供的hook方法(实现方式是匿名内部类):

findAndHookMethod(“包名”,hook的类型,“方法名”,参数,参数,***,new XC_MethodHook(){

需要重写protected void beforHookedMethod(MethodHookParam

param) throws Throwable{

此方法为劫持之前(就是劫持的时候)

此处劫持到账号密码修改

}

protected voidafterHookedMethod(MethodHookParam param) throws Throwable{

此方法为劫持之后

此处打印修改后的账号密码

}

});

效果:

没有Android基础都能学会的Xposed基础教程

通过修改密码,使认证无效,绕过登录验证

package com.example.administrator.xposedtest2; /** * Created by Administrator on 2018/2/9. */import android.util.Log; 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 static de.robv.android.xposed.XposedHelpers.findAndHookMethod; public class Tutorial implements IXposedHookLoadPackage { public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { if (!lpparam.packageName.equals("com.example.administrator.xposedtest2")) return; findAndHookMethod("com.example.administrator.xposedtest2.MainActivity", lpparam.classLoader, "isOK", String.class, String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { XposedBridge.log("---Hook Start---"); XposedBridge.log("Uname = " + param.args[0]); XposedBridge.log("Passwd = " + param.args[1]); // param.args[0]="admin";// param.args[1]="admin"; } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { XposedBridge.log("---Hook End---"); XposedBridge.log("Uname = " + param.args[0]); XposedBridge.log("Passwd = " + param.args[1]); // XposedBridge.log("param is changed already" ); } }); } }

欢迎在评论区留言,一起学习,之后会发一些xposed的劫持实战,还有frida、substrate框架会在xposed后面发表

内容有部分参考

开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
相关任务
DESIGN TASK 更多
Android APK 二次开发打包

¥10000 已有2人投标

H5小游戏开发

¥10000 已有3人投标

小游戏开发类的软件开发

¥20000 已有5人投标

宠物AI互动游戏开发

¥50000 已有2人投标

微信小游戏开发

¥10000 已有1人投标

H5小游戏开发+封装A P K

¥13000 已有1人投标

手机app绑定Android老人机需求

¥3000 已有1人投标