




















这是一个创建于 194 天前的主题,其中的信息可能已经有所发展或是发生改变。
目前我们的业务系统中有一个 java 后端服务,该服务的 docker 镜像中除了包含构建好的 jar 包外,还包含了一个二进制可执行文件和一些动态库,运行时 java 会开子进程调用这个二进制文件去做一些事情。由于这个二进制文件依赖的复杂性,我不太好 FROM scratch 去构建镜像,因此目前我是基于 debian 去构建的镜像。
私有化部署时,我们会在客户提供的机器上面部署一个 k3s 集群来跑这套系统。
领导说要防止客户进入容器拿到里面的二进制可执行文件和动态库,我目前是在构建镜像时将 bash|sh|dash 悄悄移动到其他目录下(方便我们自己调试),但是我知道这个做法其实是掩耳盗铃,因为只要别人拷贝一个 shell 文件进去就可以破解。
想问一下关于这块目前有没有人有相对成熟的方案呢
1 xkx 2025 年 12 月 2 日启动后把这个可执行文件删除,如何? 或者是这个二进制文件搞成启动时才下载的,而下载的地方搞点手脚不让随便下(比如识别服务器指纹) |
2 NewYear 2025 年 12 月 2 日远程加载,永远只存在内存。 |
3 BeautifulSoap 2025 年 12 月 2 日典型的给程序加壳的应用场景,拿到了二进制也要脱壳解密。如果可以联网的话,和上面说的动态下也是可以的,比如动态下载经过加密的二进制到内存,然后内存中解密直接执行 |
5 eephee 2025 年 12 月 2 日 via iPhone@BeautifulSoap 调用时解密吗,好像确实可以,只要 jar 包里面的私钥不被破解好像就行得通是吗 |
6 JoeJoeJoe 2025 年 12 月 2 日镜像你都提供了,只要想拿总会是能拿到的. 两个方向,一个就是楼上说的套壳加密,再一个就是限时授权码整包里 |
7 hefish 2025 年 12 月 2 日派 op 天天站服务器旁边看着。 |
8 BeautifulSoap 2025 年 12 月 2 日@eephee 是的,如果怕 jar 太好逆向的话,写一个专门的启动用二进制,用这个二进制进行上面说的工作。然后这个二进制程序本身也要搞好混淆,加壳防逆向 |
9 ferock 2025 年 12 月 2 日 via Android用虚拟机,密码不提供 |
10 Herry001 2025 年 12 月 3 日真要拿肯定是直接导出镜像然后直接拆啊……哪用得着进容器 |
11 passive 2025 年 12 月 3 日 via Android启动个 qemu ,里面加载完之后就删了程序,休眠 Guest OS 。每次 docker 开启 qemu 加载休眠 image 。 |
12 Citrus 2025 年 12 月 3 日 via iPhone不给 shell 没有任何意义。当你 docker pull 之后,镜像里的所有文件就都在磁盘里了,可以从母鸡直接访问。比如,dive 工具了解一下。 |
13 yinmin 2025 年 12 月 3 日 via iPhone你需要的真正目的是防止盗版吧? 你应该根据服务器硬件特征( cpuinfo 、网卡、TPM 等)生成授权码,然后二进制程序运行时去校验授权码是否与服务器硬件匹配。如果使用 k3s 可以做一个授权服务器固定在某个硬件上,然后每次启动时都去授权服务器确认。 |
14 lolo1 2025 年 12 月 3 日 via Android整硬件加密狗 |
15 yekern 2025 年 12 月 3 日给二进制和动态资源 在套一层和 jar 打包在一起, 运行时候释放到 tmp 下或者 一个隐藏目录, 释放到时候 随机文件名 别带后缀企图用 cache 等名称迷惑客户, 应该可以迷惑 80%的技术不太精的客户 |
18 sunny352787 2025 年 12 月 3 日你们不会真当容器是虚拟机了吧?镜像就是个压缩包,只要能拿到镜像,你们那些运行时藏文件、用本地密钥解密什么的都毫无意义啊。这玩意你就得当成是本地运行的程序只是不用本地装 jvm 而已,本地运行怎么加壳镜像里就得怎么做,别的都没用 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。