认识壳与程序的特征
国内接触到程序比较流行的编译器有:VC系列、易语言、.NET、Delphi,VB、ASM、BC++,AutoIt、PB、QT等,实例来看看“入口点代码”、“程序区段”和“加载模块”等特征。
VB6特征:
VC6特征:
入口点代码是固定的代码,入口调用的API也是相同的,其中有的push地址不同程序可能不同;区段有四个也是固定的.text、.rdata、.data和.rsrc。
VS2008,VS2013,VS2015特点:
VS特征:入口点只有两行代码,一个CALL后直接JMP,第一个CALL进去后调用的API也是相同的;区段相对于VC6多了一个.reloc。.text、.rdata、.data、.rsrc、.reloc
易语言编译无壳程序(独立编译和非独立编译):
非独立编译:特征非常明显,会加载“krnln.fnr”模块,及有一些ascii特征码
独立编译:因易语言用的是VC6的编译器,所以入口特征和区块特征跟VC6特征是一样的,最简单的就是查找字符串方法:
看特证字符串,Ollydbg中右击选择中文搜索引擎--智能搜索,如果有以下特征字符串,就可以确定是易语言编写:
Delphi特征:
入口点代码是有以下特征;区段一般有8个,基中固定的CODE,DATA,BSS。
MASM(汇编)特征:
加壳程识别:
PEiD、FFI、FastScanner、RDG Packer Detector这类程序都是通过数据库进行加壳程序特征对比的,好多年没更新了。
Exeinfo PE属于新一代查壳工具,作者目前还在更新,加壳特征库比较准确而且范围很广,如ThemIDA、WinLicense、VMProtect、ZProtect、Shielden都可以轻松识别出来,可以说是目前可以说最好的查壳工具了
Aspack壳特征:入口点及区段有以下特点
UPX壳特征:入口点及区段有以下特点
Themida壳特征:入口点及区段有以下特点,新老版本的入口点不太一致
VMProtect壳特征:入口点看起来像是乱码,主要看区段特征,里面的vmp0,vmp1名字是可以随便换的
Shielden壳特征:入口处有些跳转,分析一下代码,单步运行会现一些ascii特征,区段一般有四个,其中二个.sedata是可以随便改的
EZIP壳特征:入口处为以下特征,可F8步入,push ad 后用esp定律或单步手动脱壳,