关于《逆向工程核心原理》键盘钩子的总结

前言

终于学到了钩子这里,来做一个总结

正文

简介

通俗的来说,钩子相当于一个海关上的检查官,拥有检查程序与系统交换信息的检查权限,一旦他发现你携带的信息有问题,他就会做出相应的行动。
一般来说,钩子通过dll注入来实现(网上有不用注入的钩子教程,可惜我没成功),程序通过调用setWindowsHookEx函数,来实现钩子程序的注入。

SetwindowsHookEX()

HHOOK SetWindowsHookExA(
  int       idHook,
  HOOKPROC  lpfn,
  HINSTANCE hmod,
  DWORD     dwThreadId
);

第一个参数表征钩子的类型,但钩子的类型是微软规定好的,你只能选一种,自己不能乱写。
第二个参数是钩子执行程序,即当钩子勾到所需信息时运行的程序,
第三个参数是要注入的dll句柄
第四个参数是想要挂载的线程ID,如果该参数为0,则表明钩子是一个全局钩子

问题

1. 注入程序卡死,程序无法退出

我使用的系统是win10 64位系统,经过多方面搜索,终于确定问题,版本不匹配,dll因为CPU架构不匹配不能注入时,程序会通过SendMessage来调用你的KeyBoardProc,然后程序就卡住了,一直卡在对话框界面,卡死…
直接编译成64位的程序解决问题,同时,注入程序和dll都要是64位.
(参考知乎回答https://www.zhihu.com/question/64221483)

2.(有问题再更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值