吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2072|回复: 13
收起左侧

[讨论] 函数拦截技术

[复制链接]
头像被屏蔽
tonyfeng 发表于 2024-8-18 19:46
提示: 作者被禁止或删除 内容自动屏蔽

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lies2014 发表于 2024-8-18 22:53
C不熟,但觉得 HookApi_PK_CURVE_make_wire_body_2 里这句:
PK_ERROR_code_t ullNewFuncAddr = (PK_ERROR_code_t)New_PK_CURVE_make_wire_body_2
能返回正确地址吗?
QQ我爱破解 发表于 2024-8-18 23:46
这是写 获取程序在跑代码的时候都使用了什么函数吗
xuiaipojie 发表于 2024-8-19 08:23
要是游戏的函数被拦截会不会数据弹出函数缺失无法运行
头像被屏蔽
 楼主| tonyfeng 发表于 2024-8-19 08:44
提示: 作者被禁止或删除 内容自动屏蔽
lies2014 发表于 2024-8-19 09:05
tonyfeng 发表于 2024-8-19 08:44
我也半懂不懂的,我怀姨是不是数组问题

你就把 PK_ERROR_code_t 改为 ULONGLONG 看看效果呗
yes2 发表于 2024-8-19 09:33
本帖最后由 yes2 于 2024-8-19 09:42 编辑

[C++] 纯文本查看 复制代码
        PK_ERROR_code_t ullNewFuncAddr = (PK_ERROR_code_t)New_PK_CURVE_make_wire_body_2;
        ::RtlCopyMemory(&pNewData[2], &ullNewFuncAddr, sizeof(ullNewFuncAddr));

你这句的逻辑是要把New_PK_CURVE_make_wire_body_2函数的地址写入到pNewData[2]这个位置,长度上肯定是要指针长度的,PK_ERROR_code_t你没有给出定义,但是我猜应该是4字节。64位指针长度是8字节,少了一半所以出错了。
第一个函数之所以能成功,是因为用的是sizeof(ULONGLONG),够8个字节。两个hook函数基本都一样的东西为啥会有一个使用sizeof(ULONGLONG),另一个使用sizeof(ullNewFuncAddr)?要么是太粗心,要么就是本身对代码也不太理解,东拼西凑来的。
你对每一个需要hook的函数都有一套对应的hook、unhook函数,但是其实可以抽取出来只用一套hook、unhook函数,其中的变量可以通过参数传递,这样就不会出现你这种情况,明明是90%雷同的东西结果还能有一个出错。
另外sizeof(ullNewFuncAddr)是错的,sizeof(ULONGLONG)虽然能用但是其实也不算规范,应该使用sizeof(void*),这样如果迁移到32位,至少也能自适配,少改一点代码就少一点潜在的错误风险。
最后,这种实现方案在多线程下可能会出问题。
头像被屏蔽
 楼主| tonyfeng 发表于 2024-8-19 18:24
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
 楼主| tonyfeng 发表于 2024-8-19 18:26
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
 楼主| tonyfeng 发表于 2024-8-19 18:34
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-3 00:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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