天融信的TopSAP软件在Debian下安装失败

问题

在做这个项目的时候docker-topsap,发现换了一个基础镜像后,TopSAP 就安装不上了,明明提示的是安装成功,但是就是不能用,和之前不一样,本篇文章只是提供一个解决的思路。

背景

原基础镜像:Ubuntu,更换成了 Debian 镜像后,TopSAP 就无法安装了,安装好后将日志 cat 出来,查看信息的确提示安装成功了,但是实际去 /opt 目录查看只有一个 .bin 文件,没有安装后的文件夹。

image-20230319231346084

image-20230319231552085

image-20230319231612005

执行一下 bin 文件后,发现输出了安装失败的信息,但是在构建的时候输出了安装成功的消息,这就很奇怪了。

单步调试

提示安装成功了,但是实际没有成功,那就研究一下这个 bin 文件吧,既然直接执行不可以,那么就看看是否还有其他命令行参数吧。

image-20230319231923726

发现有两种参数可以使用,第一个就是获取一些信息,没啥用,第二种参数的第一个看起来可用。

--confirm Ask before running embedded script 翻译过来就是在每次运行嵌入式脚本之前都询问,我理解就是单步安装逻辑,类似于单步调试,执行一下试试。

image-20230319232124156

询问是否执行解压逻辑,选择是,询问是否执行 sv_install.sh,暂时不选择,因为执行后就会提示安装失败了,在这里停下来,新开一个 docker 命令行,去看看 /tmp 目录下到底解压了什么内容,应该可以看到 install 脚本的内容。

image-20230319232400691

查看了一下,有几个系统的文件夹,还有一个安装脚本,看看内容。

image-20230319232507764

首先执行 cat 命令输出 /etc/issue 文件内容来判断系统版本,然后通过系统版本来执行对应系统版本的安装脚本,因为 Debian 没有在安装脚本里面判断,所以执行执行了 else 命令输出了安装失败。

不过感觉这也太水了吧。。。竟然通过 issue 文件来判断系统版本,这个文件是用来在系统启动后输出一些信息的,正常来说是可以随便修改的。

image-20230319232748924

解决方案

那么既然知道了如何判断系统版本,那么就可以通过伪造文件来骗过安装脚本实现安装。因为 Ubuntu 系统是基于 Debian 发行的,所以按理说安装成功后运行应该没什么问题。

那么解决方案就出来了,既然安装脚本判断了 Ubuntu 字符串的数量,那么就写入一个对应的字符串进去就可以了。

image-20230319233154876

实际测试,写入字符串后,重新执行安装逻辑,就可以正常安装了,安装后,测试启动,可以正常启动,完工。

总结

幸亏程序提供了安装脚本和单步安装逻辑才能通过单步来调试,最后实现安装,不然可能就得换回 Ubuntu 系统了,目前 Linux 系统暂时不知道能用什么来实现类似于火绒剑的软件可以监听所有程序的执行逻辑。

参考链接

本文章首发于个人博客 LLLibra146’s blog
本文作者:LLLibra146
版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!
本文链接https://blog.d77.xyz/archives/649aab5b.html