钩子程序

逆向学习-Windows消息钩取

匿名 (未验证) 提交于 2019-12-02 23:30:02
钩子   Hook,就是钩子。偷看或截取信息时所用的手段或工具。 消息钩子   常规Windows流:     1.发生键盘输入事件时,WM_KEYDOWN消息被添加到【OS message queue】。     2.OS判断哪个应用程序中发生了事件,然后从【OS message queue】取出消息,添加到相应应用程序的【application message queue】中。     3.应用程序监视自身的【application message queue】,发现新添加的WM_KEYDOWN消息后,调用相应的事件处理程序处理。   设置钩子,可以在应用程序之前就能收到消息。并可以修改,拦截。   最具代表性的是MS Visual Studio中提供的SPY++。 SetWindowsHookEx()   HHOOK SetWindowsHookExW(   int idHook,        //hook type   HOOKPROC lpfn,     //hook procedure 钩子过程,是由操作系统调用的回调函数。   HINSTANCE hmod,    //hook procedure所属的DLL句柄(Handle)    钩子 过程需要存在于某个DLL内部,该DLL的实例句柄(instance handle)即是hMod。   DWORD

Runtime.addShutdownHook()(译)

时光毁灭记忆、已成空白 提交于 2019-11-30 19:08:38
序言: 每一个 Java 程序都可以为 JVM 增加一个关闭钩子。 JVM 将在关闭之前执行关闭钩子中的指令。 问题: 一个程序可能需要在退出前执行一些指令。程序可能由于下列原因而退出: 所有的线程已经执行完毕 调用 System.exit() 用户输入 Ctrl+C 系统级关闭或用户注销 适用场景: 保存应用状态,例如,当多数 IDE 退出时,它们将记忆最后的视图有哪些。 关闭某些数据库连接。 将应用关闭的消息发送给系统管理员。 解决方案: 关闭钩子支持所有这些场景。应用可以增加一个关闭钩子, JVM 将在应用退出时调用它。 抽象层次的概念: 将所有的指令( Java 代码)写入一个线程的 run() 内,并且调用 java.lang.Runtime.addShutdownHook(Thread t) 。该方法将这个线程注册为 JVM 的关闭钩子。在关闭 JVM 的时候, JVM 将并行地运行这些钩子(线程将在 JVM 关闭的时候启动)。 代码示例: public class AddShutdownHookSample { public void attachShutDownHook() { Runtime. getRuntime ().addShutdownHook( new Thread() { @Override public void run() { System.

使用k8s容器钩子触发事件

左心房为你撑大大i 提交于 2019-11-30 07:16:49
原文: http://yunke.science/2018/04/15/k8s-hook/ 容器生命周期的钩子 Kubernetes为容器提供了生命周期钩子。 钩子能使容器感知其生命周期内的事件,并且当相应的生命周期钩子被调用时运行指定的代码。 容器钩子分为两类触发点:容器创建后PostStart和容器终止前PreStop。 PostStart 这个钩子在容器创建后立即执行。 但是,并不能保证钩子将在容器ENTRYPOINT之前运行。 没有参数传递给处理程序。 容器ENTRYPOINT和钩子执行是异步操作。 如果钩子花费太长时间以至于容器不能运行或者挂起, 容器将不能达到running状态 PreStop 这个钩子在容器终止之前立即被调用。 它是阻塞的,意味着它是同步的, 所以它必须在删除容器的调用发出之前完成 如果钩子在执行期间挂起, Pod阶段将停留在running状态并且永不会达到failed状态。 如果PostStart或者PreStop钩子失败, 容器将会被kill。 用户应该使他们的钩子处理程序尽可能的轻量。 钩子处理程序的实现 容器可以通过实现和注册该钩子的处理程序来访问钩子。 可以为容器实现两种类型的钩子处理程序: Exec - 在容器的cgroups和命名空间内执行一个特定的命令,比如pre-stop.sh。 该命令消耗的资源被计入容器。 HTTP -

Qt之键盘事件监听-实时响应大小写Capslock按键

天大地大妈咪最大 提交于 2019-11-29 16:37:56
目录 一、开篇 二、效果展示 三、实现思路 1、重写QLlinEdit 2、全局应用程序事件 3、windows钩子 四、相关文章 原文链接: Qt之键盘事件监听-实时响应大小写Capslock按键 一、开篇 假期总是转眼即逝,想想今天就是中秋节最后一天了,明天又要开始挤地铁了,好像还有一篇文章需要完成,前一段时间做了一个小功能,当用户输入密码时,如果键盘开启了大写,则需要重点提示用户,否则有些用户可能会误以为自己密码输入错误。 今天博主就来分析下当时的实现过程。 本篇文章主要讲解怎么实现实时监听大小写的过程,其他内容不做详细说明。文章分析的主线路是按博主当时完成此项功能的一个思路,虽然最后的解决方案才是对的,但前边一些尝试性的解决方案,博主这里还是都写了下来。一方面可以避免大家再去做无用的尝试,另一方面也是对自己实现这一功能时的一个总结。 二、效果展示 按照惯例先上图,看看是不是同学们想想中的效果。 三、实现思路 以下分几个小结来分析博主当时实现大小写监听的一个思路,虽然前两种方式不能达到最后的需求,但是大家也可以看看,或许他更适合于你另一种需求下的场景呢! 在讲各种实现方案时,我们先来搞清楚怎么获取当前键盘是否开启了大写,方法比较简单,只修要通过 LOBYTE(GetKeyState(VK_CAPITAL)) 函数即可获取。 最终我们的键盘相应函数可能会像下面这样