针对Linux系统下加壳软件易被发现、易改变原有程序入口地址等一系列问题,提出了一种改进的软件加壳方法——加壳并重构可执行文件,即:SRELF(Shelling and Re-constructed Executable and LinkingFormat)。改进后的方法将壳程序和目标可执行文件中代码段、数据段等关键部分结合,使代码呈多态性后重新构造出新的可执行文件,使得加密软件运行的同时脱离原宿主计算机,避免了被保护软件因相同版本被破解形成通用的破解补丁。通过SRELF在安全性,透明性,伪装性和扩展性等方面的分析,证明了改进后的加壳方法在整体性能上都有显著的提高。