0x00:
软件加壳就和通信加密一样,如ssl,是不想赤裸的站在别人面前,但通常情况下这只是增加了攻击的难度,并没有避免被脱掉衣服的情况。对于脱衣服的人来说,这衣服是纽扣的还是拉链的就特别的重要,纽扣还没见过能拉掉的的。但不管你怎么加壳,最终还是要被还原出来执行的。闲话不说,进入正题,先在此总结编译器的特征,编译器的特征就像是内衣最后的遮掩,把内衣完全那啥才叫脱完衣服。只有以编译器的特征才能识别壳是否脱完,以为编译器出来的就是原始的未加壳代码。
文件样本来自于吾爱破解论坛,大家有兴趣的话可以去逛逛。
好了,还有一点,所用到的工具:
peid是不错但是peid的作者已经很久没有维护特征表了,所以我用的是ExeinfoPe,OD,一起来看看,需要的朋友见文末的链接
编译出来的程序特征体现在区段和入口,一些其他的编译器编译出来的文件在module模块也会有一些蛛丝马迹,整篇文章就基于这三个方面,进行分析总结
0x01:VC60:
vc60是一款微软开发的编译器,年代是属于比较久远的,但是现在还是可能会遇到vc60编译的程序。所以我们还是需要识别它的特征
把他拖进exeinfope里面,得结果如下:
EIP还是挺厉害的,一下就识别出来了。
载入od
观察区段信息:
以上已部分是od得到的结果,另一部分是EIP的信息,这都不重要,VC6的重要的是特征就是在这里,
VC6的编译文件有固定的四个区段.text,.rdata,.data,.rsrc
msvcrt这个字符串也勉强算是一个特征吧,入口特征就是多次push之后调用函数__set_app_type
0x02:vs系列
visual studio 随着微软的推广以及自身强大的特性,现今已经成为大型工程项目的首选项,微软推出的免费的版本,使我们能够免费就能用到正版的东西,vs的普及率也大大的提高
现在我们就来