























先是尝试直接拷贝过来跑,linux 下能出来 web 界面,但是不可用
搜索一些关键字,找到这位老哥的项目 xunlei,经过测试完美跑起来,遂想到封装 docker,扣了下关键的 cgi 部分,写了 Dockerfile 跑
发现问题,检测到是 docker 环境后,就按照白金VIP逻辑走,但是我并不是白金VIP,遂功能有 bug,开始调试,发现检测的是 /.dockerenv 文件,修改启动时删掉,还是不行,会检测 /proc/self/mounts,如果 / 挂载的是 overlayfs 就认为是 docker
index.cgi 是个静态编译的文件,不方便 hook 逻辑,遂想到 chroot,跑起来完美,但是创建容器需要增加 SYS_ADMIN 权限,强迫症开始了探索
想到可以用 proot 不带 root 权限跑,最后成功跑起来,不过有两个注意点:不能挂载 /proc 因为是完整映射了外面的挂载;创建容器需要带 SYS_PTRACE 因为 proot 基于这个实现
想到其他的方式,比如 qemu 跑,可以结合 proot 一起用,但是感觉性能会受损(我在 rpi4b 上部署)
无奈想干脆就 SYS_PTRACE 算了,但是不能挂 /proc 感觉很心塞,所以开始写一个简单的 ptrace 程序来修改 /proc/self/mounts 的行为,然而最后发现某些场景没跑通,就暂时搁置了
修改二进制,改 mounts 为 status 这样就检测不出 overlayfs 了,发现有二进制校验,放弃
IDA64 开始逆向,发现其有一部分 debug 逻辑,即运行在 /tmp/go-build 文件夹下会不走二进制校验逻辑,开熏,现在的线上版就是这个
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。