什么是加壳和不加壳软件,他们有什么区别呀?什么叫给软件加壳?怎么加?

什么是加壳和不加壳软件,他们有什么区别呀?加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩,改变其原来的特征码,隐藏一些字符串等等,使一些资源编辑软件不能正常打开或者修改 。类似WINRAR的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成 。解压原理,是加壳工具在文件头里加了一段指令 , 告诉CPU,怎么才能解压自己 。现在的CPU都很快 , 所以这个解压过程你看不出什么东东 。软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别 。当你加壳时,其实就是给可执行的文件加上个外衣 。用户执行的只是这个外壳程序 。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序 。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的 。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳 , 基本上是对程序的压缩或者不压缩 。因为有的时候程序会过大,需要压缩 。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析 。加密代码和数据 , 保护你的程序数据的完整性 。不被修改或者破解 。A壳和C壳算法不同 。
什么叫给软件加壳?怎么加?【什么是加壳和不加壳软件,他们有什么区别呀?什么叫给软件加壳?怎么加?】加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段,加壳过的程序可以直接运行,但是不能查看源代码.要经过脱壳才可以查看源代码 。加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权 , 做一些额外的工作 。大多数病毒就是基于此原理 。加壳的程序经常想尽办法阻止对程序的反汇编分析或者动态分析,以达到它不可告人的目的 。这种技术也常用来保护软件版权,防止被软件破解 。现在有专用的加壳软件 , 还可以给病毒加壳,使其能逃避一些杀软的查杀
什么加壳软件最难破解最难破解的加壳软件可能是基于混淆反汇编的加壳软件,这类加壳软件可以对可执行文件进行多次激活和保护,被加壳后的可执行文件几乎无法被反编译和静态分析,也无法被动态跟踪和监控,从而大大提升软件被破解的难度 。
软件加壳后破解难吗破解加了dex壳的app,关键是要获得解密后的源dex,现在Android加壳技术还很不成熟,大多都是通过DexClassLoader或者隐藏的函数openDexFile来将源dex加载进来,然后动态替换Application来启动源程序,跟Windows上传统的PE文件加壳有一定区别 。要破解传统的壳,需要跟踪控制流找到OEP,然后把源程序从内存中dump下来,重建输入表,最困难的就是要跟着外壳的控制流走,安全工程师为了加大破解难度,使用了很多技术来让破解者走得更艰难 。安全工程师与破解者对抗的关键点就在寻找OEP的困难性上 。在Android平台上,正因为新兴的dex加壳技术不成熟 , 导致有些另类的脱壳方法可以绕过分析算法,直接将源程序dump下来 。举个例子,安卓在4.0版本以后提供openDexFile这个函数来从内存中加载dex,所需要提供的参数是源dex在内存中的地址,所以只要对这个函数下断,然后从寄存器里找到内存地址,就能将解密后的源dex从内存中dump下来,直接对其反编译就能获得源代码了 。更进一步,关于openDexFile这个函数,其实它与***.so这个库有密不可分的关系,这个库里提供大量操作dex文件的函数,如果对这个库里的相关函数下断,然后从内存中暴力dump一大块内存区域,经常能直接将内存中的源dex给抓下来 。

    推荐阅读