zoukankan      html  css  js  c++  java
  • rpm遇到的坑-与VMP冲突

    rpm遇到的坑-与VMP冲突

    摘自:https://blog.csdn.net/shijichao2/article/details/78797586 

    2017年12月13日 22:29:21 阅读数:224 标签: centosrpmvmpvmprotect文件变小 更多
    个人分类: linux
     
    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shijichao2/article/details/78797586

    问题描述

    项目生成应用程序使用vmp(VMProtectSDK)保护提高安全性。 
    在CentOS 6.5下使用rpm打包应用程序,但释放后文件无法正常运行,根据程序运行日志可知程序运行时异常。

    思考及解决过程

    验证1:检查安装前后的应用程序是否一致。通过查看文件属性,发现RPM释放后文件比打包前文件略小100多个字节。 
    验证2:怀疑是tar.gz打包过程导致程序发生改变。单独对应用程序进行打包验证,发现压缩前后文件相同,排除 tar.gz 压缩选项与解压选项造成文件变化的情况。 
    验证3:使用没有VMP处理的应用程序进行测试,rpm安装后的文件大小改变(变小若干字节),但并不影响程序运行。 
    通过二进制查看工具检查rpm打包前后的应用程序文件,发现应用程序elf结构中的符号节与字符串节内容丢失。 
    由此可以断定rpm在打包的过程中对应用程序的文件进行修改,但不会影响正常程序运行,但会影响VMP保护后的程序运行。 
    在网上搜索关键字,stackoverflow 上找到类似问题。默认情况下rpm会修改 .symtab/.strtab 节的内容,删除调试信息(符号节和字符串节内容)。

    原因分析

    VMP保护应用程序时修改了应用程序的 elf 结构,使用花指令、混淆、虚拟机、修改跳转等手段改变了原有文件结构,其中将部分需要的指令或数据存放至 .symtab/.strtab 节,在rpm打包处理过程中被删除,导致应用程序不可用。

    解决方案

    解决方案原文链接 
    rpm build will remove .symtab/.strtab section? 
    https://stackoverflow.com/questions/44921115/rpm-build-will-remove-symtab-strtab-section

    Stripping and stopping stripping of binaries in RPM Build. 
    https://imvoid.wordpress.com/2013/06/05/stripping-and-stopping-stripping-of-binaries-in-rpm-build/

    解决方案1:修改 rpm 打包选项

    全局处理方案:

    在 SPEC 文件最顶部添加以下代码:

    1 %global _enable_debug_package 0
    2 %global debug_package %{nil}
    3 %global __os_install_post /usr/lib/rpm/brp-compress %{nil}
     
    • 1
    • 2
    • 3

    单一应用程序处理方案:

    strip --strip-unneeded binary_name
    • 1

    解决方案2:二次压缩VMP保护后的应用程序

    对照问题原因分析可知,rpm会扫描并处理应用程序符号表,但对于.so和数据文件则没有影响。 
    根据以上思路,可以对应用程序的文件描述结构避免rpm进行扫描处理即可,可以考虑对 vmp 加壳后程序进行二次打包,在安装后进行二次解压,来达到目的。

  • 相关阅读:
    js扩展Date对象的方法,格式化日期格式(prototype)
    JSP中的普通路径写法
    工作方向与目标
    Cookie工具类(获取cookie,设置cookie)
    读取普通java web项目下的WEB-INF目录下的配置文件(application.xml,xx.properties等配置文件)
    js单选和全选
    exits 和no exits
    Linux配置nginux
    Java读取利用java.util类Properties读取resource下的properties属性文件
    vue-devtools vue调试工具
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9566179.html
Copyright © 2011-2022 走看看