抱歉,Xposed真的可以为所欲为——5.我自己刷的Xposed凭什么不给我用(上)

简介: 分析定位排查下厨房APP检测手机是否安装了Xposed框架的方法,然后一步步 Hook掉对应代码,以此去掉恶心的重复弹出警告对话框。

引言


因为有带饭的习惯,每周上班前的一天都会想好这周要做的菜式,然后京东 到家采购一波食材。昨天下午当我习惯性地打开下厨房,然后:



每打开一个新的页面就弹一次对话框


于是有了这篇文章~


胡乱分析


先定位一波方法咯,接上手机,打开 monitor ,新版的AS貌似连入口都 隐藏了,你需要到 sdk的tools目录 下找下,windows下的是 monitor.bat

先获取一波下厨房的包名:com.xiachufang



接着找到对应的进程:



第一个就不用说了,接着跟踪一波方法调用,点入下一个页面弹出 Xposed提示对话框,点击确定后为止:



接着搜索:xposed 逐个排除,不难定位到(包名):



这个 XposedDetectionUtil 类十有八九就是判断是否安装了Xposed 的工具类了,接着用Jadx反编译工具,反编译一波apk,接着用AS打开 反编译后的工程! (PS:可能是采用了加固或者什么手段,不是所有代码都能正确反编译 出来的!!!)


反编译后的项目结构如下:



呃...,有点太过于耿直了吧,类名啥的也不混淆一下... 打开XposedDetectionUtil类,代码如下:


z 映入眼帘的入手点:


sXposedInstalledisXposedInstalled()方法,初步猜测前者是一个标记, 默认true,代表手机装了xposed,应该是在进行程序的时候通过一些逻辑判断后 去修改这个标志变量,然后Activity基类进入前先获取这个变量,然后决定是否 弹出Xposed警告对话框。


得出最简单的hook方法就是直接把这个变量的值修改为true。写代码试试~


Hook标志位静态变量


代码非常简单,修改权限,然后设置下标志位为true



模块安装上,重启下,接着打开下厨房,但是程序却意外闪退了,看下Log:



校验错误异常?猜测是在错误的位置修改了本地寄存器的变量, 要另外去折腾smali,脑壳疼(反编译与逆向分析java.lang.VerifyError总结) 放弃改变量这个套路了,得从另一个入手点切入。


相关文章
|
数据采集 前端开发
突破技术限制:使用 request-promise 库进行美团数据获取
本文展示了如何用`request-promise`爬取美团数据,重点是通过代理IP避免封禁。安装库后,配置含代理的请求选项,如`proxy`, `auth`和`headers`,并用`cheerio`解析HTML获取餐厅菜单。通过代理服务可以提高爬虫效率。
699 0
突破技术限制:使用 request-promise 库进行美团数据获取
|
Linux 虚拟化
VMware安装CentOS7
CentOS7是Linux系统里使用人数最多的版本,官方维护到2025年,是CentOS各版本中的首选。CentOS和RHEL的使用基本一致,但是RHEL是收费版本,为了避免换yum源之类的麻烦操作,我这里直接安装CentOS7作为后面的开发环境。本篇文章将介绍如何在VMware虚拟机里安装CentOS7系统。
359 0
|
监控 Linux 网络安全
百度搜索:蓝易云【CentOS7上安装Squid代理详细教程【附带使用教程】】
通过以上步骤,你已经成功安装和配置了Squid代理服务器,并且可以在客户端设备或应用程序中使用它进行代理访问。根据需要,你可以进一步定制Squid的配置,例如添加更多的访问控制规则或进行高级功能的配置。请注意,Squid还有许多其他的功能和选项,你可以参考Squid的官方文档以获取更详细的信息和配置指南。
710 0
|
网络协议 Linux 网络安全
文件共享同步5种方式:NFS、NAS、rsync、scp、ftp
谈到文件同步,我们最直接的同步方式是采用rsync的同步软件,rsync同步可以保持server和client的强一致(server中的增删改都会同步client),但在实际场景中rsync可能并不能被采纳。
18559 0
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
Linux
如何让linux显示器命令行界面不显示
若需在命令行界面快速关闭屏幕,可选方法包括:使用`setterm --blank force`立即关闭屏幕;利用`sudo vbetool dpms off`将显示器置于低功耗模式;在X server环境下执行`xset dpms force off`关闭屏幕;或是针对笔记本通过`echo 0 | sudo tee /sys/class/backlight/*/brightness`关闭背光。以上任一方法均可实现屏幕关闭,部分操作需要管理员权限,屏幕通常会在按键或移动鼠标后自动恢复。
1366 10
一日一技:为mitmproxy设置上游代理
一日一技:为mitmproxy设置上游代理
1577 0
|
Python
RuntimeError: The Werkzeug web server is not designed to run in production. Pass allow_unsafe_werkze
RuntimeError: The Werkzeug web server is not designed to run in production. Pass allow_unsafe_werkze
343 0
|
Web App开发 移动开发
Crack App | 【填坑】某 H5 app 的反调试绕过(Frida 与 Xposed 双版本)
Crack App | 【填坑】某 H5 app 的反调试绕过(Frida 与 Xposed 双版本)
506 0
|
Java Spring
Spring中如何获取到一个Bean实例(二)?
本文作为Spring中如何获取到一个Bean实例(一)?的姊妹篇,我们 对获取bean实例的流程做一些补充说明。
387 0