使用staticx创建静态二进制 2018-11-22 02:28:34 Steven Xeldax 之前利用pyinstaller打包二进制的时候可能在已知到其他机器上会应为glibc版本不匹配的问题而导致程序无法运行,因此我们可以尝试将所有的依赖包全部打入二进制中来解决这个问题。 可以使用StaticX等工具创建PyInstaller应用程序的完全静态绑定版本。StaticX绑定所有依赖项,包括libc和ld.so。 ### 打包流程 > Python code=>PyInstaller=>StaticX=>Fully-static application ### 使用步骤 1. 安装staticx ``` pip3 install staticx ``` 2. 进行打包 ``` staticx /path/to/exe /path/to/output staticx -l /path/to/fancy/library /path/to/exe /path/to/output ``` ### 采坑 又是喜闻乐见的采坑,打包最怕出现的就是依赖问题,当然这不可避免的又出现了。在使用staticx的时候部分pyinstaller生成的lib找不到,利用-l指定依赖目录也没有解决问题。最后将缺少的库给放到/lib下staticx就不报错了。 这里我缺少的是libffi-d78936b1.so.6.0.4,直接将该so放到了/lib下 ``` root@kali:/lib# ls -al libffi-d78936b1.so.6.0.4 -rwxr-xr-x 1 root root 149064 Nov 15 23:23 libffi-d78936b1.so.6.0.4 ``` ### 参考 https://github.com/pyinstaller/pyinstaller/wiki/FAQ https://github.com/JonathonReinhart/staticx/