首页
社区
课程
招聘
[分享]!!郁闷,花了两天优化PE文件大小,最终以失败告终~~~
发表于: 2007-9-5 07:58 8102

[分享]!!郁闷,花了两天优化PE文件大小,最终以失败告终~~~

2007-9-5 07:58
8102
!!郁闷,花了两天优化PE文件大小,最终以失败告终~~~好郁闷啊

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1126
活跃值: (156)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
一, petite 2.3的Loader主要流程
   1: 节数据处理
     1) 根据数据描述, 对数据进行解压缩; 最后一次异常跳到下一步;
     2) 修改SEH链, 部分数据拷贝; 异常跳到下一步
     3) 节数据填充以及修复E8,E9,0F 8x指令;
     4) 文件校验以及计算Key去解密伪入口;
   2: 导入表处理
     5) 处理导入表; 并解密伪入口指令;
     6) 跳到伪入口;

二, 两个Loader的说明
   1: Loader1 - 针对压缩Level = 1 - 9的选项
     该Loader, 分配一块内存作为临时缓冲区, 然后根据数据描述进行解压缩;
   压缩算法使用变形过的aPLib(至少这个我不知道和哪个官方版本对应); 由于算法很简单, 可以直接逆向过来;
   (这个算法中间有些和aPLib不一样的地方, 或者说这个算法是有问题的, 或者故意这样设置的?)
   
   2:Loader2-针对压缩Level=0的选项
     该Loader分配两块内存, 一块作为临时缓冲区, 一块作为算法核心数据区; 根据数据描述进行解压缩;
   压缩算法使用变形过的zLib(估计是1.13, 用PEiD也能识别出来; 仔细看汇编也能识别出算法; 仔细对比汇编代码和
   源代码可以看出有些什么变化), 稍作修改, 直接使用原始算法库了;)
   
   3:公共部分
     Loader1, Loader2除了数据解压缩部分有一定区别, 其他处理基本完全一致; 但一些偏移或者说相对偏移
   不一致而已.
   
三, 壳的一些小技巧, 只会对新手有一点点障碍, 对于老手完全忽略不计
   1. 利用异常跳到下一个处理点;
   2. 直接修改SEH's Handler;
   
四, 手动脱壳
   1. 忽略所有异常;
   2. bp GetModuleHandleA
   3. 返回到用户空间,         看上面的指令
      0044C778    833E 00         cmp     dword ptr [esi], 0
      0044C77B    0F84 15020000   je      0044C996
      跳转过去看到
      0044C996    59              pop     ecx
      0044C997    5E              pop     esi
      0044C998    FD              std
      0044C999    33C0            xor     eax, eax
      0044C99B    B9 66030000     mov     ecx, 366
      0044C9A0    E8 61470000     call    00451106
      接着跳过去看到
      00451106    5F              pop     edi
      00451107    F3:AA           rep     stos byte ptr es:[edi]
      00451109    61              popad
      0045110A    66:9D           popfw
      0045110C    83C4 0C         add     esp, 0C
      0045110F >- E9 093BD19C     jmp     9D164C1D
      好了, 在这儿设断点bp 0045110F(或者直接搜索指令序列#5FF3AA61669D83C40CE9#)
   4. 单步到达OEP, Dump&Rebuid Import.(记得使用Trace Level1(Disasm)哦)
2007-9-6 17:38
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
3
样本序号 执行结果 原始大小 解压大小
1 pass 20480 28672
2 failed
3 failed
4 failed
5 pass 24567 36864
6 failed
7 failed
8 failed
ID        起始时间        结束时间        做题时间        脱壳成功文件数        解压比例        提交次数       

DiKeN        2007-9-2 12:00        2007-9-5 7:58        4078        2        0.932623594        1       

得分:34.96650613
2007-9-10 15:56
0
游客
登录 | 注册 方可回帖
返回
//