吕元江
2019年1月加入去哪儿网,现负责app的分析和设备指纹反爬事项,对app脱壳,java/nativec层加解密算法分析还原有丰富经验。


1. 背景

xposed 对于很多安卓安全和逆向人员来说并不陌生,在对 app 的函数功能分析和拦截时经常会用到。本文以 xposed 修改某个应用的 IMEI 为例,作为一个简单入门介绍。供新手了解如何使用 xposed 编写自己所需的 hook 模块,以及简单介绍 xposed 在其他方面的应用场景。

2. 环境要求

手机系统:4.4.4-8.0
手机环境:必须为 root 环境
本文环境为:nexus 6P(android7.1.2)

3. xposed 环境配置所需文件

第三方 recovery:twrp-3.2.1-1-hammerhead.img
手机 root 管理:SR5-SuperSU-v2.82-SR5-20171001224502.zip
xposed 框架:xposed-v89-sdk25-arm64.zip
hook 模块管理 apk:XposedInstaller_3.1.4.apk

4. xposed 框架刷入步骤

4·1 刷入第三方 recovery:twrp (twrp-3.2.1-1-hammerhead.img)

可在 https://twrp.me/Devices/ 中查找你自己手机型号的版本。下载后将其 push 到手机 sdcard 根目录下。

a) adb reboot bootloader
b) fastboot flash recovery twrp-3.2.1-1-hammerhead.img
c) 不要重启,不要重启,不要重启,直接音量键选择进入 recovery 模式
d)刷入 twrp 成功的话,此时会进入 twrp 界面

4·2 xposed 框架的刷入

紧跟上一步:点击 Install 选择安装 xposed-v89-sdk25-arm64.zip 框架。

4·3 刷入获取 root 管理工具

提前将下载的 SR5-SuperSU-v2.82-SR5-20171001224502.zip 包 push 到 sdcard 根目录,同4·2步骤一样,选择 SR5-SuperSU-v2.82-SR5-20171001224502.zip 后刷入。

4·4 最后安装 XposedInstaller(可在 xposed 官网下载)

可通过 adb 命令进行安装:adb install XposedInstaller_3.1.4.apk

5. hook 模块的编写

以上环境搭建好了之后就可以编写我们的第一个 hook 模块了,我们以 Device Id 这个 app 为例进行篡改它的IMEI。

5·1 创建一个空的安卓工程

5·2 修改 AndroidManifest.xml 添加如下三个 meta-data

5·3 导入 Xposed api 库(XposedBridageApi-54.jar,xposed 官网提供下载)

XposedBridageApi.jar 复制到 app/libs 后,通过 build.gradle 引入。

5·4 编写 hook 模块的入口 MainHook 类,实现 IXposedHookLoadPackage 接口

5·5 配置文件 hook 模块主入口(告诉 xposed 从这里开始启动 hook 逻辑)

在 app/src/main/ 下创建文件夹 assets,并创建文件 xposed_init,将入口类全路径配置到该文件中。

6.开始编写 hook 代码

6·1 定位要 hook 的函数

我们修改软件的 IMEI 这一行作为目标测试,修改前如下图展示:

通过反编译工具确定获取 IMEI 的 api,对其进行 hook,通过反编译工具分析后确定 acr 类的 c 方法是返回 IMEI 的值,我们 hook 此方法修改返回值达到篡改 IMEI 的目的。

6·2 完整 hook 代码如下

当然还可以通过 hook 安卓获取 IMEI 的 api 来进行篡改 IMEI(一劳永逸,此处留给感兴趣的同学自己来实现)。

package com.phone.fakeimei;
import android.content.Context;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class MainHook implements IXposedHookLoadPackage {private static final String TAG = "fakeimei";//只对目标应用Device Id进行hookpublic static String needHookApp = "com.evozi.deviceid";@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {if(!loadPackageParam.packageName.equals(needHookApp)){return;}Log.d(TAG,"发现要hook的app包名:"+loadPackageParam.packageName);//load要hook的类,判断是否存Class<?> acrClazz = XposedHelpers.findClassIfExists("acr", loadPackageParam.classLoader);if(null!=acrClazz){Log.d(TAG,"发现要hook的app类:"+acrClazz.getSimpleName());XposedHelpers.findAndHookMethod(acrClazz, "c", Context.class, new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);//hook 之前操作:可以修改入参}@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);//hook之后,可以修改返回值String realImei =(String) param.getResult();String fakeImei = "123456789";Log.d(TAG,"真的IMEI:"+realImei+"假的IMEI:"+fakeImei);//用假的替换真的IMEI 调用setResult方法param.setResult(fakeImei);}});}}
}

6·3 编译 hook 模块打包为 apk,再勾选 hook 模块,然后选择重启设备(软重启在7.0手机上有时不生效)手机使 hook 模块生效


##7. 模块生效后的 hook 效果

8. xposed 在其他方面的应用

xposed 作为一款 hook 工具它的应用场景有很多,并不仅仅只是一个工具而已,如上所述你可以用来修改手机的设备信息,来模拟一台新的手机。

8·1 保护个人隐私信息

比如,你不想接受电商推送的广告或者垃圾短信,由于安卓权限的开放泛滥,很多 app 都会收集手机号,联系人,最近通话记录等等,甚至有些收集短信内容。每当电商狂欢节时会收到一堆的所谓的优惠券垃圾短信。你可以利用 xposed 将关键信息 hook 掉,在某些 app 获取你的敏感信息时返回假的数据或者空,拦截骚扰短信等,以此保护个人隐私。

8·2 黑灰产的利用 xposed 一键新机

利用 xposed 配合成熟的设备模拟插件,可以实现一键新机,一台手机变多台,羊毛党常用来薅电商的羊毛,目前很多电商判断一个新注册用户是否为新用户的时候,往往会采集设备的一些信息,而非单一的从注册时间来判断。羊毛党们为了降低成本,通常会采用 xposed 不定期模拟出一台新设备的方式,甚至能模拟出手机的文件路径,地理位置,电量,和通话记录信息等等。

在618,双十一电商大战中的百亿补贴,不仅吸引了众多用户,更吸引了羊毛党,无数用户在准备下单时发现商品已处售罄的状态,然而真实情况可能是已经被羊毛党捷足先登,甚至于在今年的十月一时,某个电器旗舰店因此面临倒闭的风险。

8·3 app 的去广告,模拟点击等等

某些 app 的自动点击,关注,甚至视频类 app 的去广告,某些 app 的优惠活动,抢单之类等等,都会发现 xposed 的身影。

xposed 入门之修改手机 IMEI相关推荐

  1. xpose修改手机imei码,注入广告

      何为hook  Hook英文翻译过来就是"钩子"的意思,那我们在什么时候使用这个"钩子"呢? 我们知道,在Android操作系统中系统维护着自己的一套事件分 ...

  2. Xposed模块开发:修改设备IMEI

    1.下载XposedBridgeApi-54.jar,将它放在libs目录下面,并右击将jar包添加到构建路径 2.AndroidMenifest.xml文件里添加三个meta-data数据 < ...

  3. 如何安全修改手机的IMEI和MAC等唯一号

    很多项目我们需要修改手机的IMEI和mac等手机唯一号,上次为了找这个,搜遍网络上的教程,大部分需要手工修改系统文件,但很多手机我们根本找不到那个文件,一旦找到了,好了,稍有修改不对重启机器的话,机器 ...

  4. xposed修改手机信息

    xposed修改手机联网方式.蓝牙信息.手机基站信息.网络类型. package camera.app.com.backward.hook.phoneinfo;import android.os.Bu ...

  5. 修改手机为单/双IMEI号

    10.修改手机为单/双IMEI号, Custom_em.h #define CUSTOM_DUAL_SIM_TWO_IMEI KAL_TRUE/KAL_FALSE KAL_TRUE为双码,KAL_FA ...

  6. 反编译008神器,修改手机型号与android版本号信息

    一个可以修改手机信息的xposed插件 008神器依赖xposed可修改其他应用获取到的系统参数值,见下图 但是我们直接从网上下载的008神器生成的手机型号和安卓版本号都是好几年前的.下面就来分析下怎 ...

  7. xposed android debug,Android 手机开启全局调试xposed插件

    手机开启全局调试ro.debuggable = 1 一般方法就是重刷boot.img ,大部分手机都比较困难. 还有就是命令临时修改,重启手机失效的. 还有magisk 刷的 今天给介绍一个xpose ...

  8. 基于Xposed框架截取安卓手机应用数据信息

    首先介绍的是Xposed只是一个安卓手机的框架,并不具有任何功能,为了实现个人的需求,我们需要自己编写模块加入到这个框架中去.现如今比较主流的Xposed框架包括微信运动步数的作弊模块.微信的虚拟位置 ...

  9. 解决中兴U880手机IMEI串号丢失的方法

    解决中兴U880手机IMEI串号丢失的方法 首先说明一下,这个方法是本人搜集来自互联网各大论坛的资料,加以整理并加入部分个人的内容而成,原版权部分归原作者,感谢他们给我们找到了解决之道. 一.判断自己 ...

  10. app怎么修改服务器IP地址,怎么修改手机服务器ip地址

    怎么修改手机服务器ip地址 内容精选 换一换 如果私钥文件丢失了,可以为服务器替换新的密钥对,并使用新的私钥文件连接云手机.以下为替换服务器密钥对的操作指导,请提前在云服务器控制台创建密钥对,并将密钥 ...

最新文章

  1. 算法--------最长连续序列(Java版本)
  2. madplay播放器移植
  3. java Integer中隐藏的细节魔鬼!来自面试官的三轮暴击!
  4. SpringBoot测试时出现Whitelabel Error Page
  5. python 组合数库函数_Python数据分析之Numpy库(笔记)
  6. web.xml中 Log4jConfigListener配置
  7. RTX5 | 内存池01 - 内存池的使用
  8. Lifewire文档阅读笔记-如何使用IP地址找对应的MAC地址
  9. 平安银行股票数据涨跌预测
  10. 西门子step7安装注册表删除_如何完全卸载step7
  11. 怎样用matlab拟合,怎么用用matlab拟合两条直线
  12. PDF编辑(PDF替换指定页)---亲测实用有效!!!
  13. 四川大学计算机学院研究生推免细则,四川大学计算机学院2012届硕士研究生推荐免试实施细则...
  14. 九宫格日记 2017年12月19日(周二)
  15. POJ 2240 HDU 1217 Arbitrage(Floyd)
  16. 稿子文字左右对称翻转_Matlab/OpenCV (2021-09-06)
  17. 红米无线连接服务器,电脑无线连接红米手机远程管理启动技巧
  18. 企业寄件分部门管理教程
  19. android关于 text_to_speach的使用(tts)
  20. vue按钮10S秒后禁用

热门文章

  1. On-Screen Keyboard(屏幕键盘) v7.0.2pro注册版
  2. 2021年最新微信漫画小程序全开源商业版免费下载
  3. matlab结构地震,结构地震反应解析递推格式的Matlab实现
  4. springmvc-带预览的异步上传图片功能
  5. Pascal基础(四)-常用函数和标准库
  6. Protel99SE精彩教程
  7. 自检、开机故障及主板厂商资料
  8. 何宾 单片机原理及应用_单片机原理及应用课后答案讲解
  9. 无线电发射器 Android,简单无线电app
  10. 发电厂电气部分第三版pdf_“十三五”普通高等教育本科规划教材 发电厂电气设备及运行(第三版) pdf epub mobi txt 下载...