社区
C#
帖子详情
请问如何当前输入是键盘输入的还是远程桌面模拟输入的?如何让输入框不被HOOK拦截?
这个还能被注册?
2009-10-22 10:54:10
如题,主要是想防止客户端被人恶意控制的情况下进行操作,判断当前的输入是本地引起的还是远程引起的,请高人指点!!!还有一个问题,如何让输入框不被HOOK拦截?有解决方案了立马结贴!另开贴送分200答谢大侠!!!
...全文
159
2
打赏
收藏
请问如何当前输入是键盘输入的还是远程桌面模拟输入的?如何让输入框不被HOOK拦截?
如题,主要是想防止客户端被人恶意控制的情况下进行操作,判断当前的输入是本地引起的还是远程引起的,请高人指点!!!还有一个问题,如何让输入框不被HOOK拦截?有解决方案了立马结贴!另开贴送分200答谢大侠!!!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
这个还能被注册?
2009-10-26
打赏
举报
回复
谢谢楼上的
_see_you_again_
2009-10-22
打赏
举报
回复
钩子函数的反拦截
请留意前面带*号注释的代码,其中传入了钩子的句柄g_hhookKey,只要使用API钩子将CallNextHookEx函数替换,并在替换函数中将其卸载,消息钩子就完蛋了。同时,还要保证本进程安装的钩子不被卸载,其中既可能有local类型的还可能有remote类型的。不要以为自己没有在程序中安装钩子,程序中就一定没有安装钩子,在MFC4版本中,MFC会自己装一个local类型的钩子,MFC7版本中好像没了。好了,下面介绍其实现。
1、建立DLL,在头文件中添加如下代码。
#ifdef HOOKFORBID_EXPORTS
#define HOOKFORBID_API __declspec(dllexport)
#else
#define HOOKFORBID_API __declspec(dllimport)
#endif
HOOKFORBID_API int fnHookForbid(void);//在exe程序中调用此函数,使DLL加载
HOOKFORBID_API bool AddHhook(HHOOK Hhook);//若exe中安装remote类型消息钩子,将其句柄添加
HOOKFORBID_API bool DelHhook(HHOOK Hhook);//在exe中卸载remote类型消息钩子时,删除其句柄
2、在.cpp文件中添加代码。
CArray<HHOOK,HHOOK> array;//用于记录本进程安装的钩子的句柄
//////////////////////////////////////////////////////////////////////////////
int fnHookForbid(void)
{
return 1;
}
bool AddHhook(HHOOK Hhook)
{
array.Add(Hhook);
return true;
}
bool DelHhook(HHOOK Hhook)
{
bool ret=false;
for(int i=0;i<array.GetSize();i++)
{
if(array.GetAt(i)==Hhook)
{
array.RemoveAt(i);
ret=true;
break;
}
}
return ret;
}
//////////////////////////////////////////////////////////////////////////////
下面的代码用于API替换,其中用到了CAPIHook 类,《Windows 核心编程》(Jeffrey Richter著)一书中有源代码。使用其它开发包也可以实现此功能。
//////////////////////////////////////////////////////////////////////////////
typedef HHOOK (WINAPI *PFNSETWINDOWSHOOKEX)(
int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);
typedef LRESULT (WINAPI *PFNCALLNEXTHOOKEX)(
HHOOK hhk,
int nCode,
WPARAM wParam,
LPARAM lParam
);
//////////////////////////////////////////////////////////////////////////////
extern CAPIHook g_SetWindowsHookExA;
extern CAPIHook g_SetWindowsHookExW;
extern CAPIHook g_CallNextHookEx;
//////////////////////////////////////////////////////////////////////////////
//此函数用于替换SetWindowsHookEx函数的ASCII版本SetWindowsHookExA
HHOOK WINAPI Hook_SetWindowsHookExA( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId )
{
HHOOK nResult =0;
nResult = ((PFNSETWINDOWSHOOKEX)(PROC) g_SetWindowsHookExA)( idHook, lpfn, hMod, dwThreadId );
//若在本进程中安装了local类型钩子,记录其句柄
if(hMod==NULL)
array.Add(nResult);
return(nResult);
}
//此函数用于替换SetWindowsHookEx函数的UNICODE版本SetWindowsHookExW
HHOOK WINAPI Hook_SetWindowsHookExW( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId )
{
HHOOK nResult =0;
nResult = ((PFNSETWINDOWSHOOKEX)(PROC) g_SetWindowsHookExW)( idHook, lpfn, hMod, dwThreadId );
//若在本进程中安装了local类型钩子,记录其句柄
if(hMod==NULL)
array.Add(nResult);
return(nResult);
}
//此函数用于替换CallNextHookEx函数,此函数只有一个版本
LRESULT WINAPI Hook_CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam)
{
LRESULT nResult =0;
nResult = ((PFNCALLNEXTHOOKEX)(PROC) g_CallNextHookEx)( hhk, nCode, wParam, lParam );
//在数组中查找句柄,若找不到,将其卸载
bool bfind=false;
for(int i=0;i<array.GetSize();i++)
{
if(array.GetAt(i)==hhk)
{
bfind=true;
break;
}
}
if(!bfind)
{
UnhookWindowsHookEx( hhk );
}
return (nResult);
}
//////////////////////////////////////////////////////////////////////////////
//使用CAPIHook 类对函数进行替换
CAPIHook g_SetWindowsHookExA("User32.dll", "SetWindowsHookExA",
(PROC) Hook_SetWindowsHookExA, true);
CAPIHook g_SetWindowsHookExW("User32.dll", "SetWindowsHookExW",
(PROC) Hook_SetWindowsHookExW, true);
CAPIHook g_CallNextHookEx("User32.dll", "CallNextHookEx",
(PROC) Hook_CallNextHookEx, true);
到了这里,所有工作都完成了,只要在exe程序中调用fnHookForbid函数,并在安装remote类型钩子时调用AddHhook函数记录其句柄,卸载时调用DelHhook函数删除句柄就万事ok了。
CH9329硬件HID方案:解决Claude Computer Use
输入
拦截
的实战指南
Windows系统下通过SendInput等API
模拟
鼠标键盘操作,常因权限隔离、
远程桌面
会话或
输入
保护机制而被
拦截
,导致AI智能体操作电脑时频频失败。硬件HID方案通过专用芯片将串口指令转换为标准USB键盘鼠标事件,让目标系统将其识别为真实物理设备,从根源绕开应用层限制。CH9329作为高性价比的USB转串口HID芯片,为Claude Computer Use的本地化落地提供了稳定可控的
输入
链路。本文介绍CH9329的硬件接线、指令帧结构、Python适配层设计,以及坐标换算和波特率调优等工程细节,并梳理
用于确定分数阶系统(FOS)的Lyapunov指数谱,包括分数阶Lorenz系统、4D分数阶Chen系统和分数阶Duffing振荡器(Matlab代码实现)
内容概要:本文介绍了用于确定分数阶系统(FOS)Lyapunov指数谱的Matlab代码实现方法,涵盖分数阶Lorenz系统、4D分数阶Chen系统和分数阶Duffing振荡器三种典型系统。文档详细阐述了Lyapunov指数在判断系统混沌、稳定性及动力学行为中的核心作用,提供了完整的数值计算流程与Matlab代码实现方案,使读者能够复现并分析这些复杂非线性系统的动力学特性。; 适合人群:具备一定非线性动力学和数值计算基础,从事系统建模、混沌理论或控制理论研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握分数阶微分系统的数值求解方法;② 学习并实现Lyapunov指数谱的计算,用于分析分数阶系统的混沌与稳定性;③ 为复杂非线性系统的建模、仿真与控制提供理论支持和技术工具。; 阅读建议:学习者应在掌握分数阶微积分和Lyapunov指数基本理论的基础上,结合提供的Matlab代码进行实践操作,通过修改参数、更换系统等方式深入理解算法原理和系统动力学行为。
创新7.1声卡驱动KX连线图
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 【创新7.1声卡KX驱动+连线图】是一款专门为创新公司所制造的7.1音频声卡量身定制的驱动方案,其核心宗旨在于为用户带来超越官方原生驱动程序的卓越音质感受。KX驱动属于一种由爱好者群体自主开发的非官方驱动软件,该驱动在Creative公司原版驱动程序的基础上进行了深度改良与功能扩充,旨在提供更为多样化的声音调节参数以及更为出色的运行表现。 我们现在来详细认识一下7.1声道系统。7.1声道代表的是一种沉浸式音频技术规范,该规范包含七个全频域音箱单元(具体包括前置左声道、前置右声道、中央声道、环绕左声道、环绕右声道、后置左声道以及后置右声道)搭配一个低频震动单元,其设计目的是为用户构建更加立体且逼真的听觉场景,尤其适合应用于电子游戏、电影观影以及音乐欣赏等场景。 KX驱动的独到之处在于其赋予了用户更为广阔的个性化定制权限,使用者能够依据自身的听音偏好对音频参数进行细致调节,例如均衡器参数、混响效果、压缩比设定、噪声抑制门限等,从而使得最终的音效呈现出更为精致且个性化的特质。不仅如此,KX驱动还兼容VST插件机制,该机制是虚拟乐器与音频效果处理软件的通用标准,用户通过安装各式各样的VST插件,能够进一步增强声卡的实用功能,例如
模拟
多种乐器音色或达成复杂的声音效果制作。 在获取并部署KX驱动程序之后,对"连线图"的正确导入工作具有决定性意义。连线图又被称为音频路由配置图或信号流向示意图,它是一份用于指导用户如何正确配置并连接各个音频输出通道的视觉化手册。对于非专业背景的使用者而言,准确设定这些音频通道可能会面临一定程度的困难,因此连线图的提供极大地简化了这一过程。依照连线图进行配置操...
PSO-LSTM基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
内容概要:本文介绍了基于粒子群优化算法(PSO)优化长短期记忆网络(LSTM)的电力负荷预测方法,并通过Python代码实现。该方法结合PSO强大的全局搜索能力,对LSTM模型的关键超参数进行智能寻优,有效提升了模型在处理非线性、强时序性电力负荷数据时的预测精度与泛化性能。文中系统阐述了从数据预处理、模型构建、PSO优化流程到预测结果分析的完整技术链条,重点展示了如何通过优化算法克服传统LSTM参数依赖经验设定的局限性,为复杂时间序列预测提供了高效解决方案。; 适合人群:具备一定Python编程能力和机器学习基础知识,从事电力系统分析、能源管理、负荷预测等相关领域的研究人员、工程师以及高校研究生。; 使用场景及目标:①应用于电力系统的短期与中期负荷预测,提升电网调度的准确性与经济性;②作为智能优化算法与深度学习融合的典型范例,用于科研项目开发与教学实践;③目标在于通过超参数自动优化,显著降低预测模型的均方根误差(RMSE)和平均绝对百分比误差(MAPE),增强模型的鲁棒性与实用性。; 阅读建议:建议读者结合所提供的完整Python代码,深入理解PSO优化LSTM的具体实现过程,重点关注适应度函数的设计、参数编码方式及优化迭代机制,并鼓励在自有数据集上进行复现实验与调参优化,以深刻掌握模型性能提升的技术路径。
YUV image viewer
代码下载链接: https://pan.quark.cn/s/4dc6ba4a4bc8 这款YUV格式的图像查看软件表现优异,同时具备将bmp等不同格式的图像文件转换为YUV格式的能力,亦可将YUV数据转换回BMP格式,操作极为便捷,并且允许用户调整RGB与YUV之间的转换算法,此外还集成了诸多其他实用功能。
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章