目前来说windows程序状态大体可以分为以下几种类型:未加壳、压缩壳、传统加密壳、代码虚拟化保护、.Net程序加密。

识别程序加的什么壳目前常用的方法有以下两个:

1.使用查壳工具:如PEiD、Exeinfo PE等查壳工具。

这些工具内置各种壳的十六进制特征码进行对比查壳。

下面说下这些工具各自的优缺点:

(1) PEiD、FFI、FastScanner、RDG Packer Detector这类程序都是通过目录下的userdb.txt(查壳程序不同可能数据库名有出入)数据库进行加壳程序特征对比的,由于userdb.txt文件都是好多年前的了,全球基本都在用fly在09年发布的UpKPEiDSign,即使有新的也都基于他制作的版本之上进行更新的,而且更新都没有太好效果,由于原理都是通过加壳程序的特征进行对应,而这些加壳特征都是个人总结而来,对加壳程序的模糊搜索对比造成可靠性不高,特别是对于VMProtect这类加密壳程序,经常被识别成一些算七八糟都没见过的加壳内容,特别是显示UPolyX,基本都是误报,对新手的误导很严重,但对于传统的一些压缩壳的识别效果还是很好的,当然了,有利有弊,正是由于它的开放性特征库,也方便给大家提供自己编写特征的方法,来识别一些新的壳,期待大家能做出自己的加壳特征来。

检测ios加壳工具 怎么判断app是否加壳_如何识别程序加的什么壳


(2) Exeinfo PE属于新一代查壳工具,作者目前还在更新,它和PEiD的区别可能就在于它的特征库是作者自己维护,不支持外部修改,新版好像也开始支持外部特征库了,这款查壳工具的加壳特征库比较准确而且范围很广,如ThemIDA、WinLicense、VMProtect、ZProtect、Shielden都可以轻松识别出来,但对于具体加壳程序的版本都是模糊的,其实个人认为加壳版本真的不重要,这个后面再具体说道,Exeinfo PE可以说是目前可以说最好的查壳工具了,推荐大家使用。

检测ios加壳工具 怎么判断app是否加壳_逆向_02


2、通过入口特征和区段特征来识别

想要知道一个程序加的是什么壳,那么一定要找到和壳的特征息息相关的信息。一般来说,主要是程序的区段信息程序的入口特征信息

区段信息可以通过PEiD的EP处点击获取到,比如下图的区段信息中可以轻松看出,这是一款Themida或者WinLicense的加壳程序。

检测ios加壳工具 怎么判断app是否加壳_逆向_03

入口特征可以通过OllyDBG载入获得,载入后可以按一下“Ctrl+A”,让OD分析一下代码,就可以把入口点一些特征字符串分析出来,从下图的入口信息可以轻松看出,这是一款Safengine加壳的程序,对于Shielden、Safengine、VProtect这类加壳程序都可以使用这种方法判断出来。

检测ios加壳工具 怎么判断app是否加壳_加壳_04


检测ios加壳工具 怎么判断app是否加壳_加壳_05