海王 发表于 2026-1-12 20:30:38

boxxie 发表于 2026-1-12 20:12
小菜不是很会改
能否,烦请楼主告诉一下具体改那里呢
多谢了

<火山程序 类型 = "通常" 版本 = 1 />

# @ typedef void (*ORIGINAL_CODE)();
# @ ORIGINAL_CODE fpOriginalLocation = nullptr;// 这里的名称与下面取特殊指针的名称一致就可以了

方法 钩子内联JMP方法 <公开 静态 @强制输出 = 真>
{
    调试输出 ("从HOOK 内存地址跳转到了当前方法中,执行完这段后再跳回源地址!")

    调用原函数 ("fpOriginalLocation", 整数, )// 跳回原地址继续向下执行

}

方法 内联钩子指定地址跳转 <公开>
{
    变量 状态码 <类型 = HOOK状态>
    变量 pTargetAddress <类型 = 无类型指针>
    pTargetAddress = 无类型指针.长整数转指针 (0x140001234)
    状态码 = 简单HOOK.创建钩子1 (pTargetAddress, 钩子内联JMP方法, 取特殊指针 ("fpOriginalLocation", 无类型指针))
    如果 (状态码 != HOOK状态.操作成功 && 状态码 != HOOK状态.目标钩子已经创建)
    {
      信息框 ("钩子创建失败," + HOOK状态码到文本 (状态码), , )
      返回
    }
    状态码 = 简单HOOK.启用钩子 (pTargetAddress)
    如果 (状态码 != HOOK状态.操作成功)
    {
      信息框 ("钩子启用失败," + HOOK状态码到文本 (状态码), , )
      返回
    }
    // 这里就已经挂接成功了,只要调用那个地址,就会HOOK回调到【钩子内联JMP方法】中执行了.
    简单HOOK.移除钩子 (pTargetAddress)
    返回


    // @ @m<RM_TYPE_INLINE_DEF>(void,ORIGINAL_CODE,fpOriginalLocation)







}


大概就是这个意思。具体还要看实际情况来定。说白了,内联就是JMP,跳来跳去罢了。

Xeres 发表于 2026-1-12 20:49:26

666666

海王 发表于 2026-1-12 20:52:18

boxxie 发表于 2026-1-12 20:12
小菜不是很会改
能否,烦请楼主告诉一下具体改那里呢
多谢了

我更新了下示例跟模块,里面有例子,参考一下吧。

boxxie 发表于 2026-1-12 23:07:14

:loveliness:
好的
多谢楼主分享哟

Xelloss0618 发表于 2026-1-12 23:45:03

其实可以改成完全无需嵌入代码的,因为你有些地方搞复杂了。
比如你用嵌入代码定义函数指针和变量,不如直接用个变整数或通用指针变量,然后用“调用静态方法、调用无参数静态方法、调用无返回值静态方法”,需要CDECL的再改一个方法就行。

另外火山一般只要类型尺寸一致就可以了,指针、句柄都可以直接用“变整数”,改为在嵌入代码里加上类型强转。定义太多类型容易跟其他模块冲突。

麒麟软件 发表于 2026-1-13 00:04:27

Xelloss0618 发表于 2026-1-12 23:45
其实可以改成完全无需嵌入代码的,因为你有些地方搞复杂了。
比如你用嵌入代码定义函数指针和变量,不如直 ...

大佬你说的很对啊,确实可以弄成不用嵌入代码!突然开窍了!哈哈,哪些类型是以后有用的!我还没弄完!感谢大佬点评!!谢谢

上等兵 发表于 2026-1-13 09:16:28

不错,谢谢分享

大有可为 发表于 2026-1-13 09:48:23

海王牛逼

boxxie 发表于 2026-1-13 10:01:05

Xelloss0618 发表于 2026-1-12 23:45
其实可以改成完全无需嵌入代码的,因为你有些地方搞复杂了。
比如你用嵌入代码定义函数指针和变量,不如直 ...

:噜阿噜
还是X大大想更高大上

boxxie 发表于 2026-1-13 10:59:10

海王 发表于 2026-1-12 20:30


# @ typedef void (*ORIGINAL_CODE)();


:L
太菜了,没看懂楼主的代码
HOOK的是个内存地址,楼主你代码里用的还是函数名.
头大了,没看懂:'(
页: 1 [2] 3 4
查看完整版本: 超级简单的HOOK库,让使用HOOK不在烦恼,基本无需嵌入代码..