程序加壳的原理?

程序加壳的原理?,第1张

在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。

加壳就是压缩EXE文件,然后把解压代码植入其中,运行前先解压在内存中再执行。目标主要是PE文件里的.text段,目的当然是保护软件不被非法修改了,当你用SOFT-ICE、TRW等跟踪后发现了要改的机器码后,如果这个EXE被“加壳”了,那你就看不到,如果没“加壳”的话,用十六进制程序就可以找到相关机器码。

upx加壳原理

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一般需要注意一下几点:

1、保证修改后的加壳程序不会产生upx产生的特征码。有很多软件可以通过这些特征码识别出程序是经过upx

加壳的。

2、保证加壳之后,程序仍然可以顺利执行。

3、在一定程度上保证效率不会下降太多。

希望对你有帮助~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11035382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存