本帖最后由 lyldalek 于 2024-9-22 12:21 编辑
[md]参考 https://bbs.kanxue.com/thread-271358.htm 做了一个脱壳机。
之前也用过 mikrom,但是一些应用启动就会退出,后来才知道是因为 mikrom 默认会将安装的应用设置为 debuggable,一些应用是会检测这些属性的。
而且作为一个开源项目,必然会有一些特征,所以就产生了一个编译自己的脱壳机的想法。
遇到的问题:
-
release-keys,一些银行软件除了会检测 root 外,还会判断是否为 debug-keys,所以我编译的是 release-keys。
-
sdcard 权限,一些游戏居然没有要求 sdcard 权限,所以就没法授予,导致脱壳文件无法写到 sdcard 上,而且我编译的是 user 版本,储存到 /data/data/pkg 下是拿不到的。想到 requestLegacyExternalStorage 这个属性,所以在应用安装的时候强制所有 app 都加上这个属性,再加上 sdcard 权限即可:
ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE;
ai.flags |= ApplicationInfo.FLAG_EXTERNAL_STORAGE;
更新代码后,make 会出错,是因为改动了api,所以按照报错提示先执行一下 make api-stubs-docs-update-current-api 命令,然后在 make 就ok了。
使用方法:
-
在 /data/local/tmp/abc 文件里面填入需要脱壳的报名。
-
打开app,等待一分钟后触发脱壳。脱壳过程中,会在 /sdcard/Android/data/${pkg_name}/ 下生成 dex 等文件,必要时多等一会,待脱壳完毕,logcat 有提示输出完毕(Job is over, 3q!!!)。
-
有指令抽取的需要手动修复一下,修复参考 fart 即可。
刷机镜像:
-
链接:https://pan.quark.cn/s/9a89355e8e41 ,提供了脱壳机镜像与原厂镜像。
-
没有编译 PixelExperience 镜像,所以自己费心装一下谷歌系软件吧,后续看情况可能会搞一下,毕竟有些游戏强依赖谷歌。
[/md] |