曲境是一个xposed模块,可实现在PC浏览器上动态监控(hook)函数调用和查看堆栈信息,及反射调用(invoke)等功能。避免了频繁写hook代码的麻烦,提供了可视化的界面,对新手更友好。
Github地址:https://github.com/Mocha-L/QuJing
1. 枚举安卓设备所有APP
2. 根据类名和方法名搜索方法
3. 方法监控,打印调用栈和出入参
4. 对目标方法强制执行
(因为是xposed模块,则依赖xposed环境,需提前准备)
1. 安装APK(在源码地址提供了编译好的apk,不想自己编译的可以直接使用),安装完成后,激活该模块并重启手机。
2. 手机重启完成后,通过adb完成固定端口转发
adb forward tcp:61000 tcp:61000
3. 浏览器输输入 http://127.0.0.1:61000/进入配置目标应用界面。界面列举了手机中的所有APP供你选择,对于你要监控/执行的应用进行勾选(支持多选)然后“提交保存”,页面重新加载后,被勾选的会排列在顶部,然后点击“下一步”。
4. 在这一步,需要手动操作手机打开APP,(如果在上一步配置之前已经打开了APP,则需要重新打开APP)。打开之后,页面会提示你端口转发的命令,复制并执行。执行成功后会显示:配置成功,点击进入,此时点击蓝字进入即可。
5. 这一步已经可以进行搜索类了,把感兴趣的类名输入进行搜索,如图搜索的时“搜索用户”的相关类,输入完成点击曲境一下,然后找到感兴趣的方法,点击方法自动跳转。
6. 进入监控的方法,可以看到该方法的基本信息。
页面往下拉则看到
这是可以操作手机进行搜索用户的操作。手机操作完成后,被执行的方法的入参(红区)、出参(蓝区)和堆栈(点击三角符号下拉)都会显示在页面。
7. 如果想使用执行方法的功能,如上述搜索功能,可以在这里填写入参并点击执行即可。需要注意的是,如果是static方法,实例选择为null,如果是非static方法,则需要监控方法捕获到实例后再下拉选择实例执行。下面用谢娜为例,展示执行搜索用户功能。
1. 函数频繁调用时,巨量的堆栈信息和出入参打印在浏览器页面,会导致页面内容过多,如无必要数据,可刷新解决。
2. 部分前端显示存在布局问题
3. 不支持开机瞬间hook的场景(因为每次开机后需要设置需要hook的APP)
如有疑问可以提issue,也欢迎大家进一步优化和提交PR。
项目依据xserver优化而来,感谢原作者。