学习日记——代码特征与壳的特征

代码特征:

VC6:

首先利用ExeinfoPE查壳

Microsoft Visual C++ ver 5.0/6.0

轻易得到其为VC6编写的代码,再点击区段查看,可以看到如下特征

.text  #代码段
.rdata #只读数据段
.data  #数据段
.rsrc  #资源段

再将程序拖入OD后有如下入口特征

push #若干个压栈
call dword ptr ds:[<&MSVCRT.__set_app_type>]
call dword ptr ds:[<&MSVCRT.__p__fmode>]
call dword ptr ds:[<&MSVCRT.__p__commode>]

先有几个压栈,然后调用了几个API(固定),同时可以点击m,看到区段特征。

VS2008:

VS2013与VS2008相似,但入口代码先为call,后为jmp,敲击enter进入call后会发现调用了如下几个特定的API

call dword ptr ds:[<&KERNEL32.GetSystemTimeAsFileT>]
call dword ptr ds:[<&KERNEL32.GetCurrentProcessId>]
call dword ptr ds:[<&KERNEL32.GetCurrentThreadId>]
call dword ptr ds:[<&KERNEL32.GetTickCount>]
call dword ptr ds:[<&KERNEL32.QueryPerformanceCounter>]   

在ExeinfoPE中查看可以查到为VS2008编写,对比VC,VS2008的区段特征多了一个.reloc,用于重定位

易语言:

非独立编译:会带有运行库,在ExeinfoPE中,无法识别非独立编译的易语言。

进入ODL后,有明显的特征

ascii "GetNewSock",0
ascii "Error",0
ascii "krnln.fne",0
ascii "Not found the ke"
ascii "rnel library or "
ascii "the kernel libra"
ascii "ry is invalid!",0
ascii "krnln.fnr",0
ascii "Path",0
ascii "Software\FlySky\"
ascii "E\Install",0

同时会加载运行库

call <jmp.&KERNEL32.lstrcatA>                               
call <jmp.&KERNEL32.LoadLibraryA>                           

按F9运行后点e可以看到加载了运行库。

独立编译:在ExeinfoPE中被识别为VC,因其用VC的连接器编译,入口特征、区段特征与VC6一致。区别在于进入一些call后会跳转到核心库中(压栈后)

Delphi:

在ExeinfoPE中能被识别,区段特征如下

CODE
DATA
BSS
.idata
.tls
.rdata
.reloc
.rsrc

在第一个call中会有如下语句调用API

call <jmp.&kernel32.GetModuleHandleA>                       

BC++:

在ExeinfoPE中能被识别,在ODL中按Ctrl+A分析代码可以看到非常大的跳转,也有

call <jmp.&kernel32.GetModuleHandleA>            

区段特征如下:

.text
.data
.tls
.rdata
.edata
.rsrc
.reloc

AMS:

汇编写的文件特别小,也是调用了

call <jmp.&kernel32.GetModuleHandleA>            

.Net:

拖进ODL后会自动运行,点击e后会发现一堆.net的运行库

AutoIT v3:

进入ODL后特征搜索会很容易发现AutoIT v3的字样,可以直接被反编译

PB、QT5:

通过模块窗口可以看到库。

加壳:

aspack:入口为pushad、call、jmp,查看区段可以发现对比为加壳的区段特征,多了.aspack(名称可变)、.adata

UPX:开头为pushad,区段信息中可以看到

UPX0
UPX1 
.rsrc

名称可变,特征不变

Themida:主要看区段特征,第一个为空白,然后接.rsrc、.idata、随机生成1、随机生成2

VMP:入口特征乱序,通过区段特征区分,

.text
.rdata
.data
.vmp0
.tls
.vmp1
.reloc
.rsrc

其中保留了源区段,但其中插入了vmp0、tls、vmp1

Shielden:ExeinfoPE无法识别,进入ODL后Ctrl+A分析,连续跳转后可以看到Se的加壳,且区段只有四个

猜你喜欢

转载自blog.csdn.net/weixin_38608231/article/details/81053516