程序化禁用精准触摸板手势及COM+ API检测、信息获取问询
Windows精准触摸板手势程序化禁用相关问题解答
问题背景
Windows精准触摸板支持三指/四指滑动切换桌面、调用Task View等手势。通过修改注册表禁用这些手势时,需重启或登出后explorer.exe才会加载新设置;但手动通过系统设置修改时,explorer.exe会立即更新。经Process Monitor监测,系统设置修改手势时explorer.exe会读取相关注册表项,推测系统设置通过COM+ API通知explorer.exe,需解决以下两个问题:
1. 如何检测COM+的使用?
- 使用Process Monitor(ProcMon):过滤目标进程(如
SystemSettings.exe和explorer.exe)的COM相关操作,比如CoCreateInstance、CoGetClassObject这类API调用,或查看进程的COM接口注册、激活事件。可在ProcMon中设置过滤条件,包含Operation为RegOpenKey(查看COM类注册表项)、Process Name为目标进程,同时关注进程的线程调用栈,捕捉COM相关函数调用。 - 使用Process Explorer:查看进程加载的COM组件DLL,以及进程的COM对象句柄。右键目标进程选择“Properties”->“COM”标签,可查看进程正在使用的COM对象、CLSID和接口信息。
- 动态调试:用x64dbg或WinDbg附加到目标进程,设置
CoCreateInstance、CoInvoke等COM核心函数的断点,跟踪调用参数,获取被调用的COM接口GUID和方法。
2. 能否从exe文件中获取COM+ API的GUID及方法信息?
可以,需通过逆向分析实现:
- 提取嵌入式类型库:部分exe会嵌入COM类型库(.tlb),用
dumpbin /resources <exe路径>查看是否有TYPELIB资源,再用资源提取工具导出,通过OLEView打开类型库,查看CLSID、接口IID和方法定义。 - 逆向二进制内容:用IDA Pro或x64dbg反编译exe,搜索GUID的十六进制格式(如
00000000-0000-0000-C000-000000000046的十六进制表示),定位COM接口的CLSID、IID。同时查找CoCreateInstance、QueryInterface的调用点,分析传入的GUID参数,结合调用上下文推断方法信息。 - 搜索字符串资源:exe中可能存储COM接口的名称、GUID字符串形式,用Strings.exe等工具搜索相关字符串,辅助定位COM相关信息。
内容的提问来源于stack exchange,提问作者Andrei Golubkov
相关产品推荐
相关产品推荐

