zoukankan      html  css  js  c++  java
  • PECompact(3.02.2)脱壳记录

    1.查壳

    2.find OEP

    3.dump

    4.fix


    die查壳:


     x32dbg调试脱壳,找OEP:

    入口点:

    mov eax,idaprohelper.44B51C
    push eax
    push dword ptr fs:[0]
    mov dword ptr fs:[0],esp
    xor eax,eax
    mov dword ptr ds:[eax],ecx

    seh异常处理函数

    设置忽略异常

    异常处理函数下断,运行

     

     SEH异常相关结构

    EXCEPTION_DISPOSITION __cdecl _except_handler(
            _In_ struct _EXCEPTION_RECORD* _ExceptionRecord,
            _In_ void*                     _EstablisherFrame,
            _Inout_ struct _CONTEXT*       _ContextRecord,
            _Inout_ void*                  _DispatcherContext
            );
    
    typedef struct _EXCEPTION_RECORD {
        DWORD    ExceptionCode;//+0
        DWORD ExceptionFlags;//+4
        struct _EXCEPTION_RECORD *ExceptionRecord;//+8
        PVOID ExceptionAddress;//+c
        DWORD NumberParameters;
        ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
    } EXCEPTION_RECORD;
    
    // Exception disposition return values
    typedef enum _EXCEPTION_DISPOSITION
    {
        ExceptionContinueExecution,
        ExceptionContinueSearch,
        ExceptionNestedException,
        ExceptionCollidedUnwind
    } EXCEPTION_DISPOSITION;
    mov eax,0xF044A2A1
    lea ecx,dword ptr ds:[eax+0x1000129E]
    mov dword ptr ds:[ecx+0x1],eax
    mov edx,dword ptr ss:[esp+0x4]                     //_ExceptionRecord
    mov edx,dword ptr ds:[edx+0xC]                     //ExceptionAddress
    mov byte ptr ds:[edx],0xE9                         //0xe9jmp
    add edx,0x5                                           //jmp xxxx指令长度 
    sub ecx,edx                 //与jmp跳转目标地址的相对偏移(去除当前指令长度)
    mov dword ptr ds:[edx-0x4],ecx        //构造jmp指令的目标地址
    xor eax,eax                               // ExceptionContinueExecution
    ret 

    ExceptionAddress patch为jmp跳转

     

    修补jmp指令:

    修补jmp指令后:

    异常处理函数结束,原异常地址下断,

    运行:

    取消断点,单步

    一直单步

    Jmp eax后来到OEP


    Dump

    脱壳后直接运行报错:

    修复:

    新开程序:

    脱壳后

     


    PECompact简单的压缩壳,脱壳没什么难度。

  • 相关阅读:
    001-导航条悬浮顶部
    000-导航栏单击事件背景变换
    1-MySQL命令行
    了解CentOS服务器的基本信息
    SecureCRT配色
    SecureCRT中文显示乱码
    Android Studio 1.1 使用介绍及导入 jar 包和第三方依赖库
    Android Json 解析
    不断更新中 书签
    Android 常用的权限
  • 原文地址:https://www.cnblogs.com/DirWang/p/15130324.html
Copyright © 2011-2022 走看看