飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6360|回复: 19

[C/C++] 自由地址 HOOK 二则 for X86

[复制链接]
  • TA的每日心情
    奋斗
    2016-1-13 12:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2017-10-19 11:02:54 | 显示全部楼层 |阅读模式
    本帖最后由 small-q 于 2017-10-19 11:05 编辑

    这个是MS的,老东西了
    [] 纯文本查看 复制代码
    PY_DWORD addr2;
    double MyFunc()
    {
            __asm pop edi \
            __asm pop esi \
            __asm pop ebx \
            __asm pop ebp \
            __asm pushad 
            //函数头恢复达堆栈平衡
    /////////////////////////////////////////////////////////////////////////////////////
            //自由代码区
            MessageBoxW(NULL,L"Detour Addr HOOK 测试",L"PYG提示:",NULL);
    
    /////////////////////////////////////////////////////////////////////////////////////
            UnHookAPI1();//恢复原地址,配合下面的代码进行返回
            __asm popad \
            __asm jmp addr1
    }
    
    VOID HookAPI1()
    {
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourAttach(&(PVOID&)addr1, MyFunc);
            if(DetourTransactionCommit() == NO_ERROR)
            {
                    //error
            }
    }
    
    VOID UnHookAPI1()
    {
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourDetach(&(PVOID&)addr1, MyFunc);
            if(DetourTransactionCommit() == NO_ERROR)
            {
                    //error
            }
    }


    这个是老飘那X64改的,感谢飘
    [] 纯文本查看 复制代码
    // HOOK指令长度
    #define HOOK_LEN 0x8
    // 保存原始指令
    BYTE Ori_Code[HOOK_LEN] = {0x00}; 
    
    // Hook代码
    
    /*   方式一
    pushad
    MOV EAX, 0x90909090
    JMP EAX
    */
    
    BYTE HookCode[HOOK_LEN] = 
    {
            0x60, 0xB8, 0x90, 0x90, 0x90, 0x90, 0xFF, 0xE0
    };
    
    
    INT32 MyHOOK32()
    {
            ///自由代码区////////////////////////////////////////////////////////////////////
            MessageBoxW(NULL,L"Addr 自定义HOOK 测试",L"PYG提示:",NULL);
    
            /////////////////////////////////////////////////////////////////////////////////////
            UnHookAPIQ();
            __asm pop edi \
            __asm pop esi \
            __asm pop ebx \
            __asm pop ebp \
            __asm popad \
            __asm jmp addr1
            //EDI为0达到破解效果
    }
    
    VOID HookAPIQ()
    {
            DWORD OldProtect;
            ::VirtualProtect((LPVOID)addr1, HOOK_LEN, PAGE_EXECUTE_READWRITE, &OldProtect);
            // 得到原始指令
            memcpy(Ori_Code, (LPVOID)addr1, HOOK_LEN);  
            // 填充跳转地址
            *(PINT32)(HookCode+2) = (INT32)&MyHOOK32;
            memcpy((LPVOID)addr1, &HookCode, sizeof(HookCode));
    }
    
    VOID UnHookAPIQ()
    {
            memcpy((LPVOID)addr1, &Ori_Code, sizeof(HookCode));        
    }
    
    


    说明:addr1可以硬编码,我的是用KMP

    评分

    参与人数 5威望 +72 飘云币 +68 收起 理由
    lucky_789 + 20 + 20 赞一个!
    GGLHY + 4 PYG有你更精彩!
    wgz001 + 8 + 8 Q总带我
    不破不立 + 20 + 20 PYG有你更精彩!
    andydau + 20 + 20

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2020-10-10 21:51
  • 签到天数: 108 天

    [LV.6]常住居民II

    发表于 2017-10-19 11:05:06 | 显示全部楼层
    国际惯例,抢沙发
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-26 00:05
  • 签到天数: 607 天

    [LV.9]以坛为家II

    发表于 2017-10-19 11:12:20 | 显示全部楼层
    来个板凳,谢谢表哥分享!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 2199 天

    [LV.Master]伴坛终老

    发表于 2017-10-19 11:27:31 | 显示全部楼层
    这个一定要支持,跟着Q婶学技术
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2017-10-19 12:40:07 | 显示全部楼层
    感谢Q神
    期待KMP
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-3-8 15:17
  • 签到天数: 249 天

    [LV.8]以坛为家I

    发表于 2017-10-19 16:19:49 | 显示全部楼层
    虽然我并看不懂,但是也觉得很牛逼。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 00:55
  • 签到天数: 1675 天

    [LV.Master]伴坛终老

    发表于 2017-10-19 17:50:48 | 显示全部楼层
    KMP layer路过  
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-4-11 09:37
  • 签到天数: 413 天

    [LV.9]以坛为家II

    发表于 2017-10-19 19:43:32 | 显示全部楼层
    有易语的吗
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 1809 天

    [LV.Master]伴坛终老

    发表于 2017-10-19 20:15:47 | 显示全部楼层
    高大上谢谢q婶学习了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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