宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 2589|回复: 0

[解决中] VC过HS保护代码

[复制链接]
  • TA的每日心情
    开心
    2024-12-9 18:45
  • 签到天数: 124 天

    [LV.7]常住居民III

    admin 发表于 2010-9-28 19:50:24 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    1. #define HS_JMP            0x63B31D
    2. #define HS_JMP2            0x63B323

    3. typedef int            (__cdecl *HS_GetProcAddress_t)( int hModule, int a2 );
    4. typedef int            (__stdcall *HackshieldComm_t )( int, void*, void* );
    5. typedef signed int    (__stdcall *KickProc_t)( int a1, int a2, int a3 );

    6. HS_GetProcAddress_t      pHS_GetProcAddress = NULL;
    7. HackshieldComm_t        pHackshieldComm  = NULL;
    8. KickProc_t       pKickProc  = NULL;

    9. signed int __stdcall new_KickProc( int a1, int a2, int a3 )
    10. {
    11.     return 1;
    12. }

    13. int __stdcall new_HackshieldComm( int hsCommCode, void *Param1, void *Param2 )
    14. {
    15.     if( hsCommCode == 4 || hsCommCode == 5 || hsCommCode == 13 ) //kill!
    16.     {
    17.         if( hsCommCode == 4 ) //replace kick proc
    18.         {
    19.             DWORD *dwParam1 = (DWORD *)Param1;

    20.             pKickProc    = (KickProc_t)*dwParam1;
    21.             *dwParam1    = (DWORD)new_KickProc;
    22.         }

    23.         int iReturn = pHackshieldComm( hsCommCode, Param1, Param2 );

    24.         return 1;
    25.     }

    26.     int iReturn = pHackshieldComm( hsCommCode, Param1, Param2 );

    27.     return iReturn;
    28. }

    29. void HookCommunication( EXCEPTION_POINTERS* pExceptionInfo )
    30. {
    31.     DWORD dwEbp        = pExceptionInfo->ContextRecord->Ebp;
    32.     DWORD dwParam2    = 0;

    33.     __asm
    34.     {
    35.         push eax;
    36.         push edx;
    37.         mov eax, dwEbp;
    38.         mov edx, [eax+0xC];
    39.         mov dwParam2, edx;
    40.         pop edx;
    41.         pop eax;
    42.     }

    43.     if( dwParam2 == 0xA ) //this is the ordinal of some export...hmm..
    44.     {
    45.         pHackshieldComm  = (HackshieldComm_t)pExceptionInfo->ContextRecord->Eax;
    46.         pExceptionInfo->ContextRecord->Eax    = (DWORD)new_HackshieldComm;
    47.     }

    48.     pExceptionInfo->ContextRecord->Eip= HS_JMP2;

    49.     return;
    50. }

    51. PVOID pContextHandler = NULL;

    52. LONG WINAPI ***ExceptionHandler( EXCEPTION_POINTERS* pExceptionInfo )
    53. {
    54.     if( pExceptionInfo->ExceptionRecord->ExceptionCode != EXCEPTION_SINGLE_STEP )
    55.     {
    56.         return EXCEPTION_CONTINUE_SEARCH;
    57.     }

    58.     if( pExceptionInfo->ExceptionRecord->ExceptionAddress == (PVOID)HS_JMP )
    59.     {
    60.         HookCommunication( pExceptionInfo );
    61.         return EXCEPTION_CONTINUE_EXECUTION;
    62.     }

    63.     return EXCEPTION_CONTINUE_SEARCH;
    64. }

    65. void InitContextHook()
    66. {
    67.     pContextHandler = AddVectoredExceptionHandler( 0x50BE17, ***ExceptionHandler );

    68.     CONTEXT Context;
    69.     Context.ContextFlags = CONTEXT_DEBUG_REGISTERS;
    70.     GetThreadContext(GetCurrentThread(), &Context);
    71.     Context.Dr0 = HS_JMP;
    72.     Context.Dr7 = (1<<0)|(1<<2)|(1<<4)|(1<<6);
    73.     SetThreadContext(GetCurrentThread(), &Context);
    74. }
    复制代码
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2025-5-8 15:51 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表