首页
社区
课程
招聘
[原创]UPX3.03外壳段处理过程全程分析
发表于: 2011-6-12 22:02 10947

[原创]UPX3.03外壳段处理过程全程分析

2011-6-12 22:02
10947

分析的不是很好,有些东西没表达清楚,大家自己分析一哈,这个程序是我自己写的个进程管理,还没写完。。。。
UPX3.03加壳,加壳时选了加密处理,高级导入保护,模拟系统标准功能,但是再外壳段好像并没见到这几个功能。
先来个CALL公式,等会要用到。具体见附件,自己分析哈


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 239
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
顶~~~此贴必火
2011-6-12 22:08
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hcg
3
感謝分享下載學習
2011-6-12 22:10
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
4
互相学习
2011-6-12 22:18
0
雪    币: 739
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
高人,自己找的规律啊
2011-6-13 10:19
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
占楼。围观学习。
2011-6-13 11:05
0
雪    币: 111
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
无聊,粗略拖到OD过了一遍.
加壳选项应该加的有问题吧.
只为帮LZ的回复页数增加贡献一份力量..

没细看具体是啥了..
struct ImportTab
{
    unsigned int n;
    unsigned int IatOffset;
    ApiStr apis[0];
};

struct ApiStr
{
    n;
    apiname;
};
00417550 > $  60            pushad
00417551   .  BE 15604100   mov esi,00416015                         ;  这里是处理以后的代码加壳选项的问题吧,这里的代码只是处理了E8和摸了导入表,其他的压缩等操作都没有
00417556   .  8DBE EBAFFEFF lea edi,dword ptr ds:[esi+FFFEAFEB]      ;  这块buffer用来存放shell解完以后的代码
0041755C   .  57            push edi
0041755D   .  EB 0B         jmp short 0041756A
0041755F      90            nop
00417560   >  8A06          mov al,byte ptr ds:[esi]                 ;  esi中为代码,该循环操作将函数拷贝到另一块buffer中,下面用了两层循环来处理
00417562   .  46            inc esi
00417563   .  8807          mov byte ptr ds:[edi],al
00417565   .  47            inc edi
00417566   >  01DB          add ebx,ebx
00417568   .  75 07         jnz short 00417571
0041756A   >  8B1E          mov ebx,dword ptr ds:[esi]
0041756C   .  83EE FC       sub esi,-4
0041756F   .  11DB          adc ebx,ebx
00417571   >^ 72 ED         jb short 00417560
00417573   .  B8 01000000   mov eax,1
00417578   >  01DB          add ebx,ebx
0041757A   .  75 07         jnz short 00417583
0041757C   .  8B1E          mov ebx,dword ptr ds:[esi]
0041757E   .  83EE FC       sub esi,-4
00417581   .  11DB          adc ebx,ebx
00417583   >  11C0          adc eax,eax
00417585   .  01DB          add ebx,ebx
00417587   .^ 73 EF         jnb short 00417578
00417589   .  75 09         jnz short 00417594
0041758B   .  8B1E          mov ebx,dword ptr ds:[esi]
0041758D   .  83EE FC       sub esi,-4
00417590   .  11DB          adc ebx,ebx
00417592   .^ 73 E4         jnb short 00417578
00417594   >  31C9          xor ecx,ecx
00417596   .  83E8 03       sub eax,3
00417599   .  72 0D         jb short 004175A8
0041759B   .  C1E0 08       shl eax,8
0041759E   .  8A06          mov al,byte ptr ds:[esi]
004175A0   .  46            inc esi
004175A1   .  83F0 FF       xor eax,FFFFFFFF
004175A4   .  74 74         je short 0041761A
004175A6   .  89C5          mov ebp,eax
004175A8   >  01DB          add ebx,ebx
004175AA   .  75 07         jnz short 004175B3
004175AC   .  8B1E          mov ebx,dword ptr ds:[esi]
004175AE   .  83EE FC       sub esi,-4
004175B1   .  11DB          adc ebx,ebx
004175B3   >  11C9          adc ecx,ecx
004175B5   .  01DB          add ebx,ebx
004175B7   .  75 07         jnz short 004175C0
004175B9   .  8B1E          mov ebx,dword ptr ds:[esi]
004175BB   .  83EE FC       sub esi,-4
004175BE   .  11DB          adc ebx,ebx
004175C0   >  11C9          adc ecx,ecx
004175C2   .  75 20         jnz short 004175E4
004175C4   .  41            inc ecx
004175C5   >  01DB          add ebx,ebx
004175C7   .  75 07         jnz short 004175D0
004175C9   .  8B1E          mov ebx,dword ptr ds:[esi]
004175CB   .  83EE FC       sub esi,-4
004175CE   .  11DB          adc ebx,ebx
004175D0   >  11C9          adc ecx,ecx
004175D2   .  01DB          add ebx,ebx
004175D4   .^ 73 EF         jnb short 004175C5
004175D6   .  75 09         jnz short 004175E1
004175D8   .  8B1E          mov ebx,dword ptr ds:[esi]
004175DA   .  83EE FC       sub esi,-4
004175DD   .  11DB          adc ebx,ebx
004175DF   .^ 73 E4         jnb short 004175C5
004175E1   >  83C1 02       add ecx,2
004175E4   >  81FD 00F3FFFF cmp ebp,-0D00
004175EA   .  83D1 01       adc ecx,1
004175ED   .  8D142F        lea edx,dword ptr ds:[edi+ebp]
004175F0   .  83FD FC       cmp ebp,-4
004175F3   .  76 0F         jbe short 00417604
004175F5   >  8A02          mov al,byte ptr ds:[edx]
004175F7   .  42            inc edx
004175F8   .  8807          mov byte ptr ds:[edi],al
004175FA   .  47            inc edi
004175FB   .  49            dec ecx
004175FC   .^ 75 F7         jnz short 004175F5
004175FE   .^ E9 63FFFFFF   jmp 00417566                             ;  1循环
00417603      90            nop
00417604   >  8B02          mov eax,dword ptr ds:[edx]
00417606   .  83C2 04       add edx,4
00417609   .  8907          mov dword ptr ds:[edi],eax
0041760B   .  83C7 04       add edi,4
0041760E   .  83E9 04       sub ecx,4
00417611   .^ 77 F1         ja short 00417604
00417613   .  01CF          add edi,ecx
00417615   .^ E9 4CFFFFFF   jmp 00417566                             ;  2循环
0041761A   >  5E            pop esi
0041761B   .  89F7          mov edi,esi
0041761D   .  B9 4B000000   mov ecx,4B
00417622   >  8A07          mov al,byte ptr ds:[edi]                 ;  刚解过来的函数
00417624   .  47            inc edi
00417625   .  2C E8         sub al,0E8
00417627   >  3C 01         cmp al,1
00417629   .^ 77 F7         ja short 00417622                        ;  查找E8,下面当然就是修复E8了
0041762B   .  803F 00       cmp byte ptr ds:[edi],0
0041762E   .^ 75 F2         jnz short 00417622                       ;  这里的判断是为了call eip+5这个特例,跳过这个特例
00417630   .  8B07          mov eax,dword ptr ds:[edi]
00417632   .  8A5F 04       mov bl,byte ptr ds:[edi+4]
00417635   .  66:C1E8 08    shr ax,8
00417639   .  C1C0 10       rol eax,10
0041763C   .  86C4          xchg ah,al
0041763E   .  29F8          sub eax,edi
00417640   .  80EB E8       sub bl,0E8
00417643   .  01F0          add eax,esi
00417645   .  8907          mov dword ptr ds:[edi],eax
00417647   .  83C7 05       add edi,5
0041764A   .  88D8          mov al,bl
0041764C   .^ E2 D9         loopd short 00417627                     ;  循环修复E8
0041764E   .  8DBE 00500100 lea edi,dword ptr ds:[esi+15000]         ;  这里定位到导入表信息了,这个导入表从结构上看来是自定义的
00417654   >  8B07          mov eax,dword ptr ds:[edi]
00417656   .  09C0          or eax,eax
00417658   .  74 45         je short 0041769F
0041765A   .  8B5F 04       mov ebx,dword ptr ds:[edi+4]             ;  从下面两条指令来看,这里取的自然是IAT的偏移了
0041765D   .  8D8430 C47802>lea eax,dword ptr ds:[eax+esi+278C4]
00417664   .  01F3          add ebx,esi                              ;  RVA + ImageBase 获取 IAT的VA地址
00417666   .  50            push eax
00417667   .  83C7 08       add edi,8
0041766A   .  FF96 28790200 call dword ptr ds:[esi+27928]            ;  加载DLL
00417670   .  95            xchg eax,ebp
00417671   >  8A07          mov al,byte ptr ds:[edi]
00417673   .  47            inc edi
00417674   .  08C0          or al,al
00417676   .^ 74 DC         je short 00417654
00417678   .  89F9          mov ecx,edi
0041767A   .  79 07         jns short 00417683
0041767C   .  0FB707        movzx eax,word ptr ds:[edi]
0041767F   .  47            inc edi
00417680   .  50            push eax
00417681   .  47            inc edi
00417682      B9            db B9
00417683   .  57            push edi                                 ;  api string
00417684   .  48            dec eax
00417685   .  F2:AE         repne scas byte ptr es:[edi]
00417687   .  55            push ebp                                 ;  dll base
00417688   .  FF96 2C790200 call dword ptr ds:[esi+2792C]            ;  GetProcAddress 获取函数地址
0041768E   .  09C0          or eax,eax
00417690   .  74 07         je short 00417699                        ;  获取失败了
00417692   .  8903          mov dword ptr ds:[ebx],eax               ;  填充IAT
00417694   .  83C3 04       add ebx,4                                ;  指向下一个IAT项,看到这个就敏感..
00417697   .^ EB D8         jmp short 00417671                       ;  自然是循环填充IAT了.
00417699   >  FF96 3C790200 call dword ptr ds:[esi+2793C]
0041769F   >  8BAE 30790200 mov ebp,dword ptr ds:[esi+27930]
004176A5   .  8DBE 00F0FFFF lea edi,dword ptr ds:[esi-1000]
004176AB   .  BB 00100000   mov ebx,1000
004176B0   .  50            push eax
004176B1   .  54            push esp
004176B2   .  6A 04         push 4
004176B4   .  53            push ebx
004176B5   .  57            push edi
004176B6   .  FFD5          call ebp                                 ;  修改PE头的属性,为了下面进行修复节名操作
004176B8   .  8D87 9F010000 lea eax,dword ptr ds:[edi+19F]
004176BE   .  8020 7F       and byte ptr ds:[eax],7F
004176C1   .  8060 28 7F    and byte ptr ds:[eax+28],7F              ;  修复节名,修复为`UPX1
004176C5   .  58            pop eax
004176C6   .  50            push eax
004176C7   .  54            push esp
004176C8   .  50            push eax
004176C9   .  53            push ebx
004176CA   .  57            push edi
004176CB   .  FFD5          call ebp                                 ;  上面修完了,应该改回去了。。
004176CD   .  58            pop eax
004176CE   .  61            popad
004176CF   .  8D4424 80     lea eax,dword ptr ss:[esp-80]
004176D3   >  6A 00         push 0
004176D5   .  39C4          cmp esp,eax
004176D7   .^ 75 FA         jnz short 004176D3                       ;  开辟一块局部变量内存出来
004176D9   .  83EC 80       sub esp,-80
004176DC   .- E9 EF9EFEFF   jmp 004015D0                             ;  Over
2011-6-13 12:42
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=NiGHter;969175]无聊,粗略拖到OD过了一遍.
加壳选项应该加的有问题吧.
只为帮LZ的回复页数增加贡献一份力量..

没细看具体是啥了..
struct ImportTab
{
    unsigned int n;
    unsigned int IatOffset;
    ApiStr apis[0...[/QUOTE]
谢谢酱油哥顶贴
2011-6-13 12:52
0
雪    币: 45
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
顶呀顶呀顶楼主,感谢分享
2011-6-13 12:55
0
雪    币: 144
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
先顶起再说,叫前排!
2011-6-13 14:50
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
嘿嘿  解释指令解释的不错哦。酱油哥分析的功能模块分析的不错哦。

学习
2011-6-13 22:25
0
雪    币: 210
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习啊,高哦
2011-6-13 22:40
0
雪    币: 437
活跃值: (110)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
占位顶
2011-6-14 09:00
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
嗯 顶一下         不错
2011-6-15 13:57
0
游客
登录 | 注册 方可回帖
返回
//