首页
社区
课程
招聘
原创]Upack变异壳
发表于: 2010-3-1 18:38 6543

原创]Upack变异壳

2010-3-1 18:38
6543
中了个马,OD跟了下,发现不太一样。难倒我这新手了,大牛们来研究一下。

参考了同志们一个文章:http://bbs.pediy.com/showthread.php?t=64813

-------------------------------------------------------------------------------------------
壳入口还是一样。
。。。。


loadlibrary下断,
跟到了DLL里,在retn  F2下断,SHIFT F9,ALT  F9,
回到程序领空:


0048AC6D    59              pop     ecx
0048AC6E    46              inc     esi
0048AC6F    AD              lods    dword ptr [esi]
0048AC70    85C0            test    eax, eax
0048AC72    74 1F           je      short 0048AC93
0048AC74    51              push    ecx
0048AC75    56              push    esi
0048AC76    97              xchg    eax, edi
0048AC77    FFD1            call    ecx
0048AC79    93              xchg    eax, ebx                         ; lima.0048ACA8
0048AC7A    AC              lods    byte ptr [esi]
0048AC7B    84C0            test    al, al
0048AC7D  ^ 75 FB           jnz     short 0048AC7A
0048AC7F    3806            cmp     byte ptr [esi], al
0048AC81  ^ 74 EA           je      short 0048AC6D     
0048AC83    8BC6            mov     eax, esi
0048AC85    79 05           jns     short 0048AC8C
0048AC87    46              inc     esi
0048AC88    33C0            xor     eax, eax
0048AC8A    66:AD           lods    word ptr [esi]
0048AC8C    50              push    eax
0048AC8D    53              push    ebx
0048AC8E    FFD5            call    ebp
0048AC90    AB              stos    dword ptr es:[edi]
0048AC91  ^ EB E7           jmp     short 0048AC7A
0048AC93    C3              retn
0048AC94    0040 08         add     byte ptr [eax+8], al
0048AC97    0000            add     byte ptr [eax], al
0048AC99    1000            adc     byte ptr [eax], al
0048AC9B    00F0            add     al, dh
0048AC9D    0100            add     dword ptr [eax], eax
0048AC9F    0010            add     byte ptr [eax], dl
0048ACA1    0000            add     byte ptr [eax], al
0048ACA3    0075 AA         add     byte ptr [ebp-56], dh

跟其他脱壳文章不同,这个壳用RETN返回了,返回到00401000,程序退出。。。。

返回堆栈数据:



大牛给点思路,这壳是原装壳还是手动修改过的。

原理会不会是先判断是不是DEBUG了,是就给个错误返回地址,否压入正确的地址?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
在下断进入LOADLIBRARY时,堆栈中就已压入:0012FFC0   00401000  lima.00401000
那怎么执行都返回那那里。
---------------------------------------------
0012FFB4   0048AC79  /CALL 到 LoadLibraryA 来自 lima.0048AC77
0012FFB8   00484004  \FileName = "KERNEL32.DLL"
0012FFBC   7C801D77  kernel32.LoadLibraryA
0012FFC0   00401000  lima.00401000
0012FFC4   7C816D4F  返回到 kernel32.7C816D4F
0012FFC8   7C930738  ntdll.7C930738
2010-3-1 18:44
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hr esp就脱了 你在说什么???
2010-3-7 07:19
0
雪    币: 54
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
00401000是OEP啊……
dump之后用ImportREC修复下IAT就OK了~
2010-3-9 16:44
0
雪    币: 54
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
OD载入处代码
00401018 >  BE B0114000     mov     esi, 004011B0


00401018 >  BE B0114000     mov     esi, 004011B0
0040101D    AD              lods    dword ptr [esi]
0040101E    50              push    eax
0040101F    FF76 34      push    dword ptr [esi+34]    ;ESP突现

hr 0012FFBC下断
F9至此处:
0048AC6E      46              inc     esi                              ; ma.00483FFF
0048AC6F      AD              lods    dword ptr [esi]
0048AC70      85C0          test    eax, eax
0048AC72      74 1F         je      short 0048AC93
0048AC74      51              push    ecx
0048AC75      56              push    esi
0048AC76      97              xchg    eax, edi
0048AC77      FFD1          call    ecx
0048AC79      93              xchg    eax, ebx
0048AC7A      AC              lods    byte ptr [esi]
0048AC7B      84C0          test    al, al
0048AC7D  ^ 75 FB          jnz     short 0048AC7A
0048AC7F      3806           cmp     byte ptr [esi], al
0048AC81  ^ 74 EA          je      short 0048AC6D
0048AC83      8BC6          mov     eax, esi
0048AC85      79 05         jns     short 0048AC8C
0048AC87      46              inc     esi
0048AC88      33C0          xor     eax, eax
0048AC8A      66:AD         lods    word ptr [esi]
0048AC8C      50              push    eax
0048AC8D      53              push    ebx
0048AC8E      FFD5          call    ebp
0048AC90      AB              stos    dword ptr es:[edi]
0048AC91  ^ EB E7          jmp     short 0048AC7A
0048AC93      C3              retn                                  ; 直接F2下断,F9跑过来就行

再F8一下就到了OEP了
00401000    55                         push    ebp
00401001    8BEC                     mov     ebp, esp
00401003    81EC 340A0000    sub     esp, 0A34
00401009    56                         push    esi
0040100A    57                         push    edi


dump出来,用修复IAT,重建PE……
都有自动工具可疑实现~不用再解释什么了吧……
脱壳后运行结果~~
小马还释放dll呢~看来挺欢实~~~
上传的附件:
2010-3-10 10:48
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
久没上线。
壳脱掉了。发现里面还有壳,没查出http地址。算了,懒得去找了。呵呵。
2010-3-20 22:07
0
游客
登录 | 注册 方可回帖
返回
//