首页
社区
课程
招聘
[原创]如何用程序判定一个PE文件是否加壳
发表于: 2010-6-22 10:41 44708

[原创]如何用程序判定一个PE文件是否加壳

2010-6-22 10:41
44708
收藏
免费 9
支持
分享
最新回复 (53)
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
感谢LZ这么好的资料
2010-7-9 18:29
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
有空再研究研究, 看不太懂... 收藏了, 谢谢~
2010-7-10 11:12
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
下收藏了再说
2010-7-10 14:49
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
其实有一段时间有对这方面的稍微研究了一下,对于lenus所说的,加了什么壳,我的理解可能是差不多,基本的都是按照特征码来的,每一个语言开发出来的软件,都会带有自己的特征,这是肯定了,那目前有多少种语言,汇编,C,C++,Dehpi,.NET,JAVA,E语言等等,都有自己的特征码,还有已知的所有壳,PEID这类的有着很多年历史的,对于特征码的收集,肯定很多,但是对于楼主所说的神经网络,智能学习,探测类的,估计目前也许有,但是知识太深奥了。
2010-7-10 23:03
0
雪    币: 333
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
30
看不懂Entropy
2010-7-12 02:45
0
雪    币: 287
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
31
这篇文章非常不错,很有耳目一新的感觉
2010-7-12 09:33
0
雪    币: 261
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
学习了,感谢分享!
2010-7-12 15:06
0
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
33
LENUS的那篇ESP定律给我的印象很深,刚开始学脱壳,看的就是ESP定律
2010-7-13 09:42
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
不错  楼主很强大啦
关于墒的概念应该是信息论方面的知识啦
2010-7-13 10:50
0
雪    币: 88
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
35
不错不错!!
2010-7-13 12:13
0
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
36
说真的,最后一章我就是在扯淡。

与其说判断加什么壳方式有这样的缺点,还不如说基于特征扫描的方式都会存在误报等缺点。

虽然说建立类似神经网络等这样的系统的确能解决调大部分人工的参与,但是将这些引入到“加壳”的判定来说就是小题大作。

所以,最后一章纯属扯淡!
2010-7-13 12:37
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
学习了,谢谢!!
2010-7-19 11:15
0
雪    币: 86
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
呵呵 等我有时间的时候去学习下
2010-7-19 13:37
0
雪    币: 296
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
PEID的。
unsigned char data[4096] = {0x00};//测试计算

static void makeHistogram(const unsigned char *buffer, int sizeOfBuffer, int histogramArray[256])
{
int i;
memset(histogramArray, 0, sizeof(int) * 256);

for(i = 0; i < sizeOfBuffer; i++)
   histogramArray[buffer[i]]++;
}

double calc_entropy(int code[],int size)
{
      double d_key=0.0;
      double code_size=(double)size;
      if (code_size<0)
      {
        code_size+=4294967296.000000;
      }

      for (int i=0;i<256;i++)
     {
        double result=(double)code[i];
       if (result!=0)
       {
         result=(double)(int)result;
         if (result<0)
          {
           result=+4294967296.000000;
            }
        result=result / code_size;
        d_key-=result*log(result);
        }
     }
    d_key= d_key / log((double)2);
    return d_key;
}

int _tmain(int argc, _TCHAR* argv[])
{
int histogramArray[256];

double i;

makeHistogram( data, sizeof(data), histogramArray);

i=calc_entropy( histogramArray, sizeof(data));

printf("%f",i);

return 0;
}
2010-7-19 22:58
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
40
啊 我说的是看过类似的英文文章 忘了哪看的了
2010-7-20 05:20
0
雪    币: 1319
活跃值: (2306)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
41
高人终于又现身了,理论强大啊
2010-7-23 08:53
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
学习中,很有帮助!
2010-7-30 09:39
0
雪    币: 139
活跃值: (19)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
43
好文章!顶lenus!期待lenus再次放血
2010-7-31 12:22
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
44
虽然我是新手 也总得试着看看吧 呵呵 谢谢楼主了
2010-8-12 13:07
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
不懂,学习一下
2010-8-12 17:52
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
46
代码简陋了点,单靠熵的标准,误报率相当哪个的高
之前论坛上的GUnpack的误报率基本能控制在10%以内
2010-8-18 10:33
0
雪    币: 104
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
看着有点晕菜了,不过想要弄懂我想也只是时间上的问题,努力中......
2010-9-1 12:40
0
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
48
up...看雪强人真多
2010-9-8 17:30
0
雪    币: 257
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
好文章,特来学习,谢了
2010-9-18 22:25
0
雪    币: 14677
活跃值: (3130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
收藏了,慢慢学习。
2010-9-20 11:56
0
游客
登录 | 注册 方可回帖
返回
//