upx的功能有两种描述。一种叫作给程序加壳,另外一种叫压缩程序。其实这两种表述都是正确的,只是从不一样的角度对upx的
描述。upx的工做原理实际上是这样的:首先将程序压缩。所谓的压缩包括两方面,一方面在程序的开头或者其余合适的地方插入一
段代码,另外一方面是将程序的其余地方作压缩。压缩也能够叫作加密,由于压缩后的程序比较难看懂,主要是和原来的代码有很大
的不一样。最大的表现也就是他的主要做用就是程序自己变小了。变小以后的程序在传输方面有很大的优点。其次就是在程序执行时
,实时的对程序解压缩。解压缩功能是在第一步时插入的代码完成的功能。联起来 就是:upx能够完成代码的压缩和实时解压执行
。且不会影响程序的执行效率。upx和普通的压缩,解压不一样点就算在于upx是实时解压缩的。实时解压的原理可使用一下图形表
示: 1==>2==>3==>4==>5==>6
假设1是upx插入的代码,2,3,4是压缩后的代码。5,6是随便的什么东西。 程序从1开始执行。而1的功能是将2,3,4解压缩为7,8,9。7,8,9就是2,3,4在压缩以前的形式。
连起来就是:1==>7==>8==>9==>5==>6
最初代码的形式就应该是:7==>8==>9==>5==>6
用upx压缩以后形式为:1==>2==>3==>4==>5==>6
执行时的形式变为:1==>7==>8==>9==>5==>6
相似的技术还有不少。这样的技术较多的应用于:木马和病毒躲避杀毒软件时,发布的程序防止被反编译或破解时。upx是一
种典型的加壳程序或者压缩程序。所以已经有很是成熟的去壳程序或者解压缩程序。同时,不少的杀毒软件 也能够识别出加有upx
壳的病毒和木马。而一些软件生产场上为了防止被破解所加的壳也同时被轻易的破解。在这样 的状况下不少人想出了产生本身的
加壳程序的想法。应此不少人都经过改编一些成熟的加壳程序来产生本身的加壳程序。其实改编upx也是很简单的。由于upx的源代
码是公开的,因此能够下载它的源代码来瞧瞧。upx能够压缩不少种类型 的可执行文件。所以若是本身只是想要压缩exe程序,则
只须要阅读与压缩exe文件相关的内容。这些代码是不多的。 改写upx通常须要注意一下几点: 一、保证修改后的加壳程序不会产生upx产生的特征码。有不少软件能够经过这些特征码识别出程序是通过upx加壳的。 二、保证加壳以后,程序仍然能够顺利执行。 三、在必定程度上保证效率不会降低太多。
转载自:http://blog.csdn.net/zacklin/article/details/7419001