递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 335|回复: 2
打印 上一主题 下一主题

[视窗] 有木有大佬帮忙封装一段C++代码

[复制链接]

19

主题

84

帖子

407

积分

中级会员

Rank: 3Rank: 3

积分
407
跳转到指定楼层
楼主
发表于 2024-11-2 13:17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void SetCompleteHook(BYTE head,DWORD offset,...) // OK
{
        DWORD OldProtect;

        VirtualProtect((void*)offset,5,PAGE_EXECUTE_READWRITE,&OldProtect);

        if(head != 0xFF)
        {
                *(BYTE*)(offset) = head;
        }

        DWORD* function = &offset+1;

        *(DWORD*)(offset+1) = (*function)-(offset+5);

        VirtualProtect((void*)offset,5,OldProtect,&OldProtect);
}


回复

使用道具 举报

29

主题

305

帖子

2594

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2594
沙发
发表于 2024-11-2 13:26:09 来自手机 | 只看该作者

回帖奖励 +10 金钱

1.直接嵌入式,2.用微软的detours hook库多方便啊
回复

使用道具 举报

3

主题

86

帖子

1214

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1214
板凳
发表于 2024-11-2 13:34:47 | 只看该作者
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 SetCompleteHook <公开 静态 @禁止流程检查 = 真>
  3. 参数 head <类型 = 字节>
  4. 参数 offset <类型 = 变整数>
  5. {
  6.     @ DWORD OldProtect;
  7.     @ VirtualProtect((void*)@<offset>,5,PAGE_EXECUTE_READWRITE,&OldProtect);
  8.     @ if(@<head> != 0xFF){
  9.     @     *(BYTE*)(@<offset>) = @<head>;
  10.     @ }
  11.     @ DWORD* function = &(DWORD)@<offset>+1;
  12.     @ *(DWORD*)(@<offset>+1) = (*function)-(@<offset>+5);
  13.     @ VirtualProtect((void*)@<offset>,5,OldProtect,&OldProtect);

  14. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 04:36 , Processed in 0.083580 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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