-
Notifications
You must be signed in to change notification settings - Fork 648
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Android Shamiko模块证书问题 #200
Comments
先试试把shamiko删掉,如果证书恢复正常,则应该是shamiko模块后台操作导致的。现在都2024年了,隐藏Root无特殊情况就别使用早就停止维护的shamiko模块了,而且它不开源,可能含有某些后门程序。 |
感谢大佬 |
不用谢 |
大佬您好,我换了德尔塔面具,发现似乎不是面具或shamiko的关系,我将根证书导入/etc/security/cacerts/文件夹后(安卓13)在系统证书内还是找不到对应的证书 |
抱歉,这个我就不知道了,昨天专门测试Vivo Y52S刷了个安卓12L系统(AndyYan的LineageOS 19 BVN GSI通用系统),测试能用,这个机型只能用面具24.3(24300)suu修改版,用遵守排除列表隐藏magisk。另一个红米5刷了第三方安卓11,测试Apatch和最新德尔塔面具都能用。均为EXT4文件系统。我这两个手机都刷不了安卓13,没有安卓13手机,没法测试。你可以下载个MT管理器查看/system/etc/security/cacerts/下面有没有proxypin证书(应该是243f0bfb.0这个文件),有就是系统限制无解了,没有243f0bfb.0的话可以尝试一下Apatch(类似kernelsu但兼容性更好也更易用)或者降级安卓12或刷安卓13GSI https://sourceforge.net/projects/andyyan-gsi/ (注意备份数据)如果可能的话。 |
我换了Apatch,但是MT挂载system读写失败,然后我用了模块,现在已经可以用了,感谢大佬指导 |
你好,请问是什么模块 |
不行,小米10pro android13情况下,刷的apatch,使用模块方式安装,系统证书里面没有,mt目录里去看了也没有 |
可以先试试德尔塔面具(Kitsune Mask) 如果德尔塔也不行,可能你内核不支持overlayfs,这种情况请刷KernelSU的GKI内核,不要用APatch或者KernelSU LKM修补法,否则没效果。 如果仍然不行,估计是ROM使用了"write failed: EROFS: Read-only file system"这个文件系统。现在MIUI好多EROFS文件系统的。解决方法,要么刷GSI系统,要么降级到MIUI 11及以下版本。如果能关闭AVB,可以用终极大招:解包system分区,把证书文件(在模块里面有)放里面,然后再打包回去,只不过这样一旦升级系统就无效了,不升级系统的无所谓 |
感谢您的回答,最后我再github上找到了另一个直接执行移动证书的脚本,执行下就移到系统了,重启以后会失效,不过这样也好,我想用时候执行下就好https://github.com/bigwolftime/mount_cert_with_sh |
本人环境说明
如果你使用了 解决方法快速预览解决方法方法1:
方法2:将
使用Magisk-ProxyPinCA模块注入证书
#!/system/bin/sh
exec > /data/local/tmp/ProxyPinCA.log
exec 2>&1
#set -x
MODDIR=${0%/*}
set_context() {
[ "$(getenforce)" = "Enforcing" ] || return 0
default_selinux_context=u:object_r:system_file:s0
selinux_context=$(ls -Zd $1 | awk '{print $1}')
if [ -n "$selinux_context" ] && [ "$selinux_context" != "?" ]; then
chcon -R $selinux_context $2
else
chcon -R $default_selinux_context $2
fi
}
#LOG_PATH="/data/local/tmp/ProxyPinCA.log"
echo "[$(date +%F) $(date +%T)] - ProxyPinCA post-fs-data.sh start."
chown -R 0:0 ${MODDIR}/system/etc/security/cacerts
if [ -d /apex/com.android.conscrypt/cacerts ]; then
# 检测到 android 14 以上,存在该证书目录
CERT_HASH=243f0bfb
CERT_FILE=${MODDIR}/system/etc/security/cacerts/${CERT_HASH}.0
echo "[$(date +%F) $(date +%T)] - CERT_FILE: ${CERT_FILE}"
if ! [ -e "${CERT_FILE}" ]; then
echo "[$(date +%F) $(date +%T)] - ProxyPinCA certificate not found."
exit 0
fi
TEMP_DIR=/data/local/tmp/cacerts-copy
rm -rf "$TEMP_DIR"
mkdir -p -m 700 "$TEMP_DIR"
mount -t tmpfs tmpfs "$TEMP_DIR"
# 复制证书到临时目录
cp -f /apex/com.android.conscrypt/cacerts/* "$TEMP_DIR"
cp -f $CERT_FILE "$TEMP_DIR"
chown -R 0:0 "$TEMP_DIR"
set_context /apex/com.android.conscrypt/cacerts "$TEMP_DIR"
# 检查新证书是否成功添加
CERTS_NUM="$(ls -1 "$TEMP_DIR" | wc -l)"
if [ "$CERTS_NUM" -gt 10 ]; then
mount -o bind "$TEMP_DIR" /apex/com.android.conscrypt/cacerts
for pid in 1 $(pgrep zygote) $(pgrep zygote64); do
nsenter --mount=/proc/${pid}/ns/mnt -- \
mount --bind "$TEMP_DIR" /apex/com.android.conscrypt/cacerts
done
echo "[$(date +%F) $(date +%T)] - Mount success!"
else
echo "[$(date +%F) $(date +%T)] - Mount failed!"
fi
# 卸载临时目录
umount "$TEMP_DIR"
rmdir "$TEMP_DIR"
else
echo "[$(date +%F) $(date +%T)] - Android version lower than 14 detected"
TEMP_DIR="/data/local/tmp/cacerts-copy"
SYSTEM_CACERTS_DIR="/system/etc/security/cacerts"
IMPORT_CA_DIR=${MODDIR}/system/etc/security/cacerts
rm -rf "$TEMP_DIR"
mkdir -p -m 700 $TEMP_DIR
# 复制系统证书到临时目录
cp $SYSTEM_CACERTS_DIR/* $TEMP_DIR
# 复制 ProxyPin 证书到临时目录
cp $IMPORT_CA_DIR/* $TEMP_DIR/
set_context $SYSTEM_CACERTS_DIR "$TEMP_DIR"
# 将 /system/etc/security/cacerts 挂载到 tmpfs
mount -t tmpfs tmpfs $SYSTEM_CACERTS_DIR
chown -R 0:0 $TEMP_DIR
chmod -R 644 $TEMP_DIR
# 将临时目录中的证书移动到 系统证书目录
mv $TEMP_DIR/* $SYSTEM_CACERTS_DIR/
echo "[$(date +%F) $(date +%T)] - Mount success!"
fi
if [ $(id -u) -ne 0 ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
手动配置开机自动注入证书
你需要将下面的注入脚本放到 #!/system/bin/sh
set -e
exec > /mnt/inject-system-cert.log
exec 2>&1
TEMP_DIR="/mnt/ca-copy"
SYSTEM_CACERTS_DIR="/system/etc/security/cacerts"
# 要注入的证书需要放到以下目录
IMPORT_CA_DIR="/data/adb/cacerts"
if [ -d $IMPORT_CA_DIR ]; then
CA_COUNT=$(find $IMPORT_CA_DIR -maxdepth 1 -type f -name "*.0")
[[ -z "$CA_COUNT" ]] && \
echo "No valid CA certificates in $IMPORT_CA_DIR directory" && \
exit 1
else
mkdir -p $IMPORT_CA_DIR
echo "No valid CA certificates in $IMPORT_CA_DIR directory"
exit 1
fi
set_context() {
[ "$(getenforce)" = "Enforcing" ] || return 0
default_selinux_context=u:object_r:system_file:s0
selinux_context=$(ls -Zd $1 | awk '{print $1}')
if [ -n "$selinux_context" ] && [ "$selinux_context" != "?" ]; then
chcon -R $selinux_context $2
else
chcon -R $default_selinux_context $2
fi
}
inject_system_cacerts() {
mkdir -p -m 700 $TEMP_DIR
# 复制系统证书到临时目录
cp $SYSTEM_CACERTS_DIR/* $TEMP_DIR
# 将要注入的证书导入到临时目录
cp $IMPORT_CA_DIR/* $TEMP_DIR/
set_context $SYSTEM_CACERTS_DIR "$TEMP_DIR"
# 将 /system/etc/security/cacerts 挂载到 tmpfs
mount -t tmpfs tmpfs $SYSTEM_CACERTS_DIR
chown -R 0:0 $TEMP_DIR
chmod -R 644 $TEMP_DIR
# 将临时目录中的证书移动到 系统证书目录
mv $TEMP_DIR/* $SYSTEM_CACERTS_DIR/
echo "[$(date +%F) $(date +%T)] - Mount success!"
}
inject_system_cacerts
if [ $(id -u) -ne 0 ]; then
echo "This script must be run as root" 1>&2
exit 1
fi 将你所有要注入的CA证书都放到
方法3:
参考链接Dr-TSNG/ZygiskNext#39 (comment)
|
有什么开源的隐藏root模块推荐吗?我用的lsposed,这玩意和shamiko是捆绑的啊,不用shamiko就漏了 |
Zygisk Assistant 效果很不错,建议搭配Magisk27以上 |
ksu,zygisknext,playintegrityfix 这三个我现在都在用,我先试试把 shamiko 卸载了会不会漏,会漏再用 Zygisk-Assistant 。 |
哦,我忘了切换分支了, zygisknext 的源码在 master 分支上 |
zygisknext原来开源现在不开源了,那个源码是最终开源版本的,https://github.com/Dr-TSNG/ZygiskNext/releases/tag/v4-0.9.1.1 版本号0.9.1.1 |
闭源就闭源吧,反正我只能继续用。现在把shamiko换成zygisk-assistant了,和原来效果一样,这样就行了😂 |
安卓12,红米k40,MIUI13,激活shamiko后导入的243f0bfb.0文件失效(系统证书里找不到,模块也没用),请问有其他的解决方案吗
The text was updated successfully, but these errors were encountered: