首页
社区
课程
招聘
[求助]PE Armor V0.76 (hying壳)修改版 脱壳讨论(高难度)
发表于: 2012-9-28 20:59 7879

[求助]PE Armor V0.76 (hying壳)修改版 脱壳讨论(高难度)

2012-9-28 20:59
7879
论坛各位高手大哥,有一个高难度壳(见附件),有兴趣挑战一下高难度的试试,看能完整脱壳不!

    查壳为PE-Armor V0.76 -> hying *,据高手分析可能为PE Armor V0.76 的修改版,把脱壳机利用的几个关键点去掉了,所以用Forgot版主的 ROMRA II 脱壳机总是出现内存错误,无法运行!
    用Hying's PE-Armor v0.7x Unpacking Script (见http://bbs.pediy.com/showthread.php?t=16437
)这个脚本可以运行起程序,但停不到OEP上。

   此壳被杀毒软件报毒,导致被加壳软件无法使用,另外,加壳的软件在win7 64位系统下无法运行!

   恳请各位路过大神试一试,挑战一下高难度!!!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 3277
活跃值: (1992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个是什么壳?如果压缩壳的话很好办,用ESP定律,F7,F8几下就到OEP了。
2012-9-28 22:24
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我没有脱过,不过有前辈发表过脱文:
http://www.pediy.com/kssd/pediy06/pediy6392.htm
挺详细的说
2012-10-15 15:16
0
雪    币: 90
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢各位兄弟关注,据说这是hying的老压缩壳PE Armor V0.76 的修改版,但论坛上的旧帖方法对PE Armor V0.76 修改版无效了。试过Forgot版主的Hying壳的OEP脚本bugfix :http://bbs.pediy.com/showthread.php?t=16437

///////////////////////////////////////////////////////////////////////////
// Hying's PE-Armor v0.7x Unpacking Script
//
// Author:      forgot
// OS:          Windows XP SP2
// Date:        2005-07-24
// Config:      Ignore all exceptions
// Feature:     Anti Anti Debugging
//              OEP Detection
//              Imports Decryption(unfinished)
//

var                     i
var                     j
var                     k

var                     ldrbase
var                     ldrsize

var                     importflag

var                     apioutputstr
var                     apivalloc
var                     apicfilew
var                     apigmodhw
var                     apigetheap

var                     patch1

var                     setfakeoep

start:

                        // get API address

                        gpa     "VirtualAlloc", "Kernel32.Dll"
                        mov     apivalloc, $RESULT
                        gpa     "CreateFileW", "Kernel32.Dll"
                        mov     apicfilew, $RESULT
                        gpa     "GetModuleHandleW", "Kernel32.Dll"
                        mov     apigmodhw, $RESULT
                        gpa     "OutputDebugStringA", "Kernel32.Dll"
                        mov     apioutputstr, $RESULT
                        gpa     "GetProcessHeap", "Kernel32.Dll"
                        mov     apigetheap, $RESULT

                        // hide debugger

                        dbh
                        mov     i, apioutputstr         // ignore OutputDebugStringA trap
                        asm     i, "pop eax"            // "retn xx" will be detected
                        add     i, $RESULT
                        asm     i, "add esp, 4"
                        add     i, $RESULT
                        asm     i, "jmp eax"

                        // bypass GetProcessHeap

                        sub     esp, 4                  // call stack frame
                        mov     [esp], eip
                        mov     eip, apigetheap
      rtu

                        mov     i, eax
                        add     i, 0C

                        and     [i], 2           // clear 27-31 bit

                        // get some info

                        bp      apivalloc
                        eob     __get_depack_info
                        run

__get_depack_info:
                        bc      apivalloc               // hijack VirtualAlloc
                        rtu                             // get address of depacked loader
                        mov     ldrbase, eax

                        // game start

                        bp      apicfilew
                        eob     __cfw
                        run

__cfw:
                        bc      apicfilew
                        rtu

                        bp      apigmodhw
                        eob     __gmhw
                        run

__gmhw:
                        bc      apigmodhw
                        rtu

                        // bypass ZwSetInfromationThread

                        find    eip, #6AFE#             // push -2
                        find    $RESULT, #8D85#         // lea  eax, [ebp+xxxxxxxx]
                        mov     i, $RESULT

                        add     i, 2
                        mov     j, [i]
                        add     j, ebp
                        mov     eip, j

                        // pre-get FAKE entrypoint

                        find    eip, #8B4424CC#         // mov  eax, [esp-34]
                        mov     setfakeoep, $RESULT

                        // skip decrypt procedure

                        find    eip, #87E6#             // xchg esi, esp
                        find    $RESULT, #E2??#         // loop xxxxxxxx
                        find    $RESULT, #87E6#         // xchg esi, esp
                                                        // anti junk instructions
                        mov     i, $RESULT
                        bp      i
                        eob     __decrypt_0
                        run

__decrypt_0:
                        bc      i

                        // process imports

                        find    eip, #8985#             // mov  [ebp+xxxxxxxx], eax
                        find    $RESULT, #83A5#         // and  dword ptr [ebp+xxxxxxxx], 0
                        find    $RESULT, #8B85#         // mov  eax, [ebp+xxxxxxxx]
                        mov     i, $RESULT
                        bp      i
                        eob     __test_it_enc
                        run

__test_it_enc:
                        bc      i
                        sto

                        mov     importflag, eax

                        // I don't have a target with no imports protections, sorry.
                        //cmp   eax, 0
                        //jz    __normal_it

                        //deihohoho

                        // bypass ZwQueryInformationProcess detection

                        find    eip, #5A775175#         // "ZwQueryInformationProcess"
                        find    $RESULT, #0BC0#         // or   eax, eax
                        mov     i, $RESULT
                        bp      i
                        eob     __zw_q
                        run

__zw_q:
                        bc      i
                        mov     eax, 0

                        // anti anti dumpping

                        find    eip, #64FF3530000000#   // push dword ptr fs:[0]
                        find    $RESULT, #C74020#       // mov  dword ptr [eax+20], xxxxxxxx
                                                        // length = 7
                        mov     i, $RESULT
                        bp      i
                        eob     __antidump
                        run

__antidump:
                        bc      i
                        add     eip, 7

                        // Go Go Go

                        find    eip, #334104#           // xor  eax, [ecx+4]
                        find    $RESULT, #034108#       // add  eax, [ecx+8]
                        find    $RESULT, #33410C#       // add  eax, [ecx+C]

                        find    $RESULT, #648F01#       // pop  dword ptr fs:[ecx]
                        mov     i, $RESULT
                        bp      i
                        eob     __seh_3
                        run

__seh_3:
                        bc      i

                        // go to OEP

                        eoe     __find_bound
                        run

__find_bound:

                        mov     i, [eip]
                        and     i, 0FFFF
                        cmp     i, 8562                 // bound   eax, [ebp+4148E8]
                        je      __bound
                        esto
                        jmp     __find_bound

__bound:
                        mov     i, setfakeoep
                        bp      i
                        eob     __final
                        esto

__final:

                        sti
                        mov     i, eax
                        bp      i
                        eob     __oep
                        run

__oep:
                        bc      i

                        // game over

                        ret

程序可以正常跑出来,但无法停在oep上,还请路过高手指点一二啊!
2012-10-15 18:55
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
那软件放上来吧,这样更方便大家共同研究研究
2012-10-15 20:16
0
雪    币: 90
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
附件已经上传,有兴趣的请试试吧!
2012-10-16 22:57
0
游客
登录 | 注册 方可回帖
返回
//