java中如何调用钩子函数

java中如何调用钩子函数,第1张

JAVA是运行在虚拟机上的,而钩子函数是直接对 *** 作系统进行 *** 洞手作控制的,这也是Java和C的主要区别之一,Java要悉御实现钩子函数比较麻烦,需要使用JNI技术,就是Java本地接口,调用C写的钩子函数,所以你还有学会用C写一个钩子函数纳陆嫌,然后再用Java的JNI调用C

问得不清楚,所以不懂怎么回答这个区别。

所谓回调函哗燃数,一般就是悔衡把函数的地址作为参碧芦做数传进去,让调用的函数在内部可以调用这个函数。

例子:

void CALLBACK fun(){...} 这是一个函数,回调函数

void AAA(int a, Fun* p)这是一个普通函数,但第二个参数是fun

AAA(5, fun)

**********补充一下啊××××××××

如果你是想真正实现键盘记录功能,那只能用消息钩子实现,具体怎么搞你搜索一下API HOOK,原理我在下面都说过了。早期的黑客软件都是这样实现的。你可以到安全焦点上看看。主要的技术有:远程线程注入、钩子、键盘消息。

另外,java的进程到底能不能注入很难说,所以辩答我说应该用全局钩子,也就是说对所有的信息进行拦截,所以需要把函数写道DLL文件里实现内存的共享。

另外其实可以投机取巧的方法实现。比如就是空间隐藏,完全可以实现,但是要注意技巧,比如防止焦点丢失啊,因为这样键盘输入的东西就记不冲扰下来了~~~

怎么样~这样可以给分了吗?有问题再问啊~~

键盘记录器,估计java是不可能实现的。。。

涉及到windows编程。。

可以用c实现。。。原理是这样的。。

键盘被按下之后,会向窗口发送一个按键消息,这个消息传递给窗口,在窗口的消息循环中被处理,这个时候,如果用c语言写了一个钩子,加入窗口所在进程中,拦截传入的消息,从中读出按下的键是哪个就可以了。。。

java貌似不可能实现那个东西,如果有的话也肯定是钩子之类的~~~

反正进程钩子是有携判慧的,消息钩子不知道有没有。。

用c实现的步骤:

写个DLL文件,把钩子处理函数写在里面,然后导出这个函数。编译成DLL文件

然后注入进程。如果你是要在java的程序里记录,那是不可能设置为局部钩子的,只能是全局钩子!!!

java调用c是这样的:

使用jni技术:

首先java中写一个本地方法

1、然后编译这个类,然后用javah编译它,会产生一个头文件

2、在vc中包含这个头文件,重写里面的方法(这个方法和你在java中写的本地方法是对应的),同样生成一个DLL

3、java中,用System.loadLibrary加载这个dll文件,调用你写的那个方法就可以了~~~

4、键盘记录好像不能直接被java读取,可以先记录到一个文件中,java里面直接读文件了,这样还能避免用jni

你搜索一下呗~~关键字:

api hook、jni、java 钩子


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8174667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存