IDT(中断描述符表)分为IRQ(真正的硬件中断)和软件中断(又叫异常)。HOOK的思路为,替换键盘中断处理的函数地址为自己的函数地址。这样在键盘驱动和过滤驱动之前就可以截获键盘输入。思路确定之后,可以写代码了首先获取到IDT,这个需要使用汇编指令sidt来获取,这个指令读取了IDTR寄存器的内容,...
分类:
其他好文 时间:
2015-04-28 20:39:31
阅读次数:
490
同样也是寒江独钓的例子,但只给了思路,现贴出实现代码原理是通过改变端口驱动中本该调用类驱动回调函数的地方下手//替换分发函数 来实现过滤#include #include #include #include // Kbdclass驱动的名字#define KBD_DRIVER_NAME L"\\.....
分类:
其他好文 时间:
2015-04-24 16:12:54
阅读次数:
284
1. Delegate类似于于c++中的函数指针,在C#中定义为一个类声明定义时,有些像类:delegate int MyDelegate(char c);实例化:(注意函数不要加括号,要的不是函数调用,而是函数地址)MyDelegate myfuncs = new MyDelegate(MyCla...
【函数指针】什么是函数指针 int a,b,c; int max(int,int); int (*p)(int,int); //定义指针函数,指针变量活取函数地址 p=max; c=(*p)(a,b) 函数指针就是函数的起始地址,我们可以使用一个指向函数的指针变量来存储这个地址,当前的指针变量就指向...
分类:
其他好文 时间:
2015-04-16 23:41:12
阅读次数:
188
一. 递归的慢究竟慢在哪
递归就是函数自己调用自己,函数每次调用的时候需要将以下内容存入递归栈:调用函数地址、形参、局部变量、返回值。所以如果递归调用了N次,那压栈操作要保存N
* 调用函数地址、N * 局部变量、N * 形参、N * 返回值。这势必是影响效率的。
二. 递归和循环的比较:
递归和循环是两种不同的解决问题的思路,我们不能片面的说循环的效率一定会比递归高,下面我们做...
分类:
其他好文 时间:
2015-04-15 09:37:41
阅读次数:
120
第一部分: Linux线程API基础
一:线程创建与结束
(1)pthread_t //线程的标识符类型
(2)pthread_create //用来创建一个线程, 参数线程标识符, 线程属性, 线程运行函数地址
(3)pthread_join //用来等待一个线程的结束, 参数被等待线程标识符,用户自定义指针
(4)pthread_exit //线程非正常结束...
分类:
编程语言 时间:
2015-04-14 19:48:07
阅读次数:
244
libnet提供的接口函数按其作用可分为四类:
* 内存管理(分配和释放)函数
* 地址解析函数
* 数据包构造函数
* 数据包发送函数
以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):
★
内存管理函数
单数据包内存初始化:
int libnet_init_packet(u_short packet_size, u_char **b...
分类:
Web程序 时间:
2015-04-08 19:53:44
阅读次数:
187
HOOK api以前的做法是修改PE文件输入表,使其加载自定义的DLL去挂载对应的HOOK。具体实现方式是在调用原API函数前,将其前8个字节修改为跳转到自己定义的函数地址,执行完函数,又将原API前8个字节恢复,再调用原API,到达对API劫持的功能。在每次调用过程中,先修改前8字节,跳转到自定义...
分类:
其他好文 时间:
2015-04-08 00:43:46
阅读次数:
195
前言
Win32应用程序中,子控件的消息都是分发到其父窗口的消息处理函数中去了,这对于我们需要自定义子控件的某些特性时时十分不方便的,还好,Windows为我们提供了控件子类化的相关接口API。核心的思想是:通过获取子控件的消息处理函数地址,设置子控件的消息处理函数到自己定义的函数里,也就是Get/SetWindowLong API的使用。
测试代码
这里是一个...
场景:
1. 多线程编程时,有时候需要统计某个变量或对象的创建个数或者是根据某个变量值来判断是否需要继续执行下去,这时候互锁函数是比较高效的方案之一了。...
分类:
编程语言 时间:
2015-02-28 11:29:34
阅读次数:
182