大学生创新训练项目开发日志 (8-14 ~ 8-24)
技术路线
利用 Xposed 模块在应用加载 app 包时将获取到的软件资源打上包名标记后上传到内网服务器。
实现流程
初次尝试
实现 IXposedHookLoadPackage
的 handleLoadPackage
方法。
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);
XposedBridge.log("File upload is starting");
new SendText("Invoked", lpparam.packageName).execute();
}
结果:失败。部分软件包没有 android.permission.INTERNET
权限,需要提权。
试错历程
- 查看
platform.xml
,试图为所有应用添加inet
用户组,失败(未能实现)。 - 试图利用 root 权限,并使用
su; su 2000
命令转移到有网络权限的 shell,失败(黑屏)。
注入框架提权
最后查到了 这个帖子,按此钩取框架的包管理器的授权方法,并为所有软件包都添加了网络权限。
结果:仍失败。查阅日志发现新版 Android 应用默认不允许明文 HTTP 流量传输。
更换后端服务器
修改了后端的 node 服务器至 HTTPS,使用自签名 CA 颁发的证书,并令实验机安装该自签名 CA 根证书。
结果:成功,后端服务器接受到了运行的 APP 上传至服务器的文件,且以包名命名。