2016-03-02 21 views
2

因此,为了工作,他们让我编写一个简单的程序来跟踪工作流程中的员工效率(例如使用键盘快捷键,窗口位置以及需要查看内容的频率等)。目前我们想跟踪'F5'键(带来下一个工作项),'Alt + Tab'(更改窗口),'Ctrl + V'(粘贴),但可能会扩大,因为他们发现有更多的捷径或东西他们想跟踪。某些应用程序停止所有获取键击的尝试

注意我们在windows 7上,用c#编写跟踪程序。

为了做到这一点,我编写了一个低级挂钩库来捕获所选择的击键,将消息发送到挂钩链中,然后向注释中添加一个注释以使用该键。钩子库在所有网络浏览器和大多数普通程序中都很有用(除非我们实际上并不关心浏览器,所以我们忽略了在它们中完成的所有事情)。

问题是,他们用来管理他们的工作(我们实际上关心跟踪的程序)的应用程序如何阻止我们的钩子挂钩,我不知道如何。有问题的应用程序是TA2000桌面。

我知道,如果应用程序在LowLevelHooksTimeout期间内未能呼叫callnexthook(),挂钩的方式会起作用,系统将终止挂钩。所以,也许TA2000只是花了很长时间,或者我把超时时间缩短到了30秒(是的,我知道这比钩子更需要时间),但这没有效果。

我试过的下一件事是实现基于原始输入API的跟踪系统。再次浏览器,微软办公室,记事本和我打开的所有其他程序的跟踪轨道,除了它仍然无法跟踪TA2000中的按键。这确实让我感到惊讶,因为根据MSDN

  • 的应用程序没有检测或打开输入设备。
  • 应用程序直接从设备获取数据,并根据需要处理数据
  • 应用程序可以区分输入源,即使它来自同一类型的设备。例如,两个鼠标设备。

所以,如果我直接从设备TA2000是如何阻止我也得到按键获取数据?

我能想到的最后一件事就是在TA2000上使用dll注入来注入一个钩子。然而,这种方法似乎有风险,因为这是我和其他任何开发人员都没有任何经验的事情,我们想跟踪的应用程序是操作关键,所以搞砸它不会发生,并将代码注入其内存空间似乎是一种好方法搞砸了。

如果有人可以解释TA2000如何阻止我跟踪击键,如何击败它或指向一个好方向,我会非常感激。

p.s.这被认为是SO格式的一个合适的问题,但它也足够具体以成为一个可行的问题。非常抱歉,如果这不是一个好问题,但我凭借这一点在我的智慧结束。

+0

TA2000 Desktop是旧版本,还是以兼容模式运行?在Windows 7之前,所有的键盘和鼠标输入都以发送到应用程序的窗口事件消息的形式出现,但对于从其他平台移植过来的旧软件或软件来说,情况并非总是如此。我试图搜索TA2000 Desktop,但发现了几个不同的软件包,这些软件包被称为某种变体,所以我无法分辨它是哪一种 - 这是财务/投资软件包还是其他?它有多大可能被设计为防止键盘记录器窥探? –

+0

@MattJordan是的,这是我们的呼叫中心代表使用的财务软件包。它的设计肯定是为了防止窥探,因为它被用于金融行业,但我不确定。可悲的是TA2000或者至少我们使用的版本是为我们定制的,所以我们很难在网上找到与我们使用的版本相同的版本。 – user5999614

+0

第一步是确定这可能是安全“功能”,还是只是软件的设计方式。我建议使用一个流程调试器,看看它是否隐藏活动。在一个孤立的环境中执行此操作,因为任何一种完整的监视软件都可能使其速度变慢。 Sysinternals的Process Explorer可能是一种安全的第一种方法 - 它不会记录击键,但它可能表明TA2000是否试图隐藏它正在做的事情。 –

回答

2

这个财务软件包是安全的,以防止窥探。以管理员身份运行密钥日志记录软件似乎可以解决此特定问题。最初使用Sysinternals的Process Explorer识别安全性,这对于这样的意外问题是一个很好的起点。

+0

非常感谢! – user5999614

相关问题