操作系统中运行的其他应用程序是否可以读取我的应用程序使用的击键?
鼠标事件和窗口句柄呢?
操作系统是否使用任何安全墙来保护我的应用程序免受其他可能渗透到机器中的潜在危险应用程序的影响?
在这个问题上,Mac 中的 Windows 有什么区别吗?
谢谢
操作系统中运行的其他应用程序是否可以读取我的应用程序使用的击键?
鼠标事件和窗口句柄呢?
操作系统是否使用任何安全墙来保护我的应用程序免受其他可能渗透到机器中的潜在危险应用程序的影响?
在这个问题上,Mac 中的 Windows 有什么区别吗?
谢谢
哦,伙计,今晚你要请客!
操作系统中运行的其他应用程序是否可以读取我的应用程序使用的击键?
鼠标事件和窗口句柄呢?
绝对地。Windows 消息处理真的很复杂。它有点像这样:
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch ( msg )
{
case WM_CREATE:
case WM_DESTROY:
case WM_COMMAND:
case WM_KEYDOWN:
}
}
等等。基本上,图形系统为您的应用程序提供的每条消息都会持续调用此函数。每种不同类型的消息都由 标识msg
,并hwnd
为您提供窗口句柄。每种命令类型的信息都存储在其中wparam
和lparam
/或它们的某种组合中。
事实证明,Windows 中有大量的API Hooking 技术。好消息是其中一个SetWindowsHookEx()
允许您将自己的处理程序插入到另一个应用程序的消息管道中,然后窃取他们的消息。这就是该窗口上发生的每个按钮、每个菜单、每个调整大小、创建、销毁、鼠标移动、重绘、keydown、keyup 等。
还有另一种邀请自己的方法 - 使用 DLL 注入将代码放入进程的地址空间,然后修改正在运行的代码。
这一切都不容易,但肯定有可能
现在,您想了解防御。好吧,UIPI或用户界面特权隔离就是这样一种防御。进程的特权级别(或强制完整性级别)控制其他进程可以作为该进程执行的操作。Vista 使用此技巧将某些应用程序彼此隔离。接下来; 窗口站、桌面和会话。您是否知道,当您获得 UAC 对话框时,您实际上是在一个单独的桌面上运行并consent.exe
截取您的桌面并将其粘贴为新桌面的背景?
等什么?
回去一点。每个 Window 站可以有多个桌面,你猜怎么着?好:
Windows 操作系统中的 Windows 是 Desktop 对象的子对象。
因此,这意味着如果您为应用程序创建一个单独的桌面以在其中运行并且对主桌面中的对象的关键句柄不会显示在此处。Windows 使用它来保护登录、锁定屏幕、UAC 屏幕。它也被我用于我正在开发的产品中,并且被KeePass使用。
这些功能是 Vista/Windows 7 的基础,它们不太可能消失。要充分利用它们,请打开 UAC 并可能阅读此内容。
现在,Mac OS X。免责声明:我对 OS X 堆栈知之甚少。但是,我熟悉 Linux/X Server。Linux 越来越多地转向 RBAC/MAC 类型的系统,引入了 posix 功能,而不是 setuid 位等。然而,在 X 中实现 SELinux 时,开发人员遇到了障碍。X 基本上以 root 身份运行其服务器(桌面)(应该向您发送警告信号),桌面应用程序(客户端)在本地连接到它,并且只传递一个 cookie。参见 X 授权。
从根本上说,X 通过某种传输方式运行,如果不使用加密,您的行为至少可以被外人察觉。首先,Linux 内核可能只允许您使用ioperm()
. 如果做不到这一点,如果你有魔法 cookie,你可以用它连接到 X 服务器并运行各种命令。当然,这需要一个狡猾的设置,但这是可行的。
在客户端和服务器之间添加隔离方面,XACE是 SELinux 的等价物。
现在,这如何适用于 Mac OS X?好吧,不是很多——显然,X11 已经被弃用了。无论如何,在内部,Mac OS X 使用自己的渲染引擎和自己的窗口代码 (Cocoa)。好吧,事实证明,通过一些挖掘,您也可以在 Mac OS X 上拦截消息。Cocoa 是桌面 API;在它下面使用了一种叫做 Quartz 的东西,它也支持水龙头(source)。
我并不完全精通这一切是如何运作的——但是,我认为它归结为获得适当的特权并做出正确的决定。Mac OS X 使用 Unix 共享对象,所以它的回调机制基本上会使用函数指针。我不确定那里有什么特权限制。
如果有人对 OS X 有更多了解,请随时接受我所说的并在您自己的答案中对其进行扩展:)
通常,大多数应用程序不会专门保护击键,因此恶意应用程序通常会记录您的所有击键。
这就是为什么在补丁、服务发布、安全更新、防病毒等方面投入了如此多的努力——因为一旦恶意应用程序出现在您的计算机上,它几乎可以做任何事情(在标准窗口、linux 或 macos 环境中)
是的,有可能,它们被称为键盘记录器。如果发生这种行为,有软件会警告您(我个人使用卡巴斯基安全软件)。
如果您对它的完成方式感兴趣,VB 中有一个关于饥饿黑客的示例。