API拦截c语言,API函数演示Hook拦截窗口的应用例程

0b1966f76a14960eb8241473e1860104.png

.DLL命令 CallWindowProcA, 整数型, , "CallWindowProcA"

.参数 动态调用代码, 字节集, , 一定要用本人编写的

.参数 子程序, 整数型, , 子程序指针

.参数 参数, 整数型, 数组, 为整数数组,参数1为成员1…类推;文本型和字节集型(自定义结构)为指针

.参数 参数数目, 整数型, , 一定要和参数数组相符,不然会出错

.参数 是否C调用, 逻辑型, , 真为cdecl调用方式,假为stdcall调用方式(即标准WINAPI方式)

.如果真 (pFunAddress ≠ 0)

返回 (真)

.如果真结束

hLibModule = LoadLibraryA (动态链接库路径)

.如果真 (hLibModule = 0)

返回 (假)

.如果真结束

pFunAddress = GetProcAddress (hLibModule, 欲截获的函数名) ' 获取API函数地址

.如果真 (pFunAddress = 0)

FreeLibrary (hLibModule)

返回 (假)

.如果真结束

.如果真 (VirtualProtect (pFunAddress, 5, #PAGE_EXECUTE_READWRITE, dwOldProtect) = 假)

FreeLibrary (hLibModule)

返回 (假)

.如果真结束

pData = 指针到字节集 (pFunAddress, 5) ' 保存API入口前5个字节

写到内存 ({ 233 } + 到字节集 (到整数 (新函数地址 - (pFunAddress + 5))), pFunAddress, 5) ' 修改API入口前5字节

pData = pData + { 233, 0, 0, 0, 0 }

addrData = 取字节集变量数据地址 (pData, pData, 0)

写到内存 (到整数 (pFunAddress + 5 - (addrData + 10)), addrData + 6, 4)

FreeLibrary (hLibModule)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值