【问题标题】:Intercept outputs from a Program in Windows 7在 Windows 7 中拦截程序的输出
【发布时间】:2010-09-28 11:29:32
【问题描述】:
我有一个可执行程序,可以将数据输出到硬盘,例如C:\文档。
我需要一些方法在 Windows 7 中的数据到达硬盘之前拦截它们。然后我将加密数据并将其发送回硬盘。不幸的是,.exe 文件不支持重定向命令,即 > 在命令提示符下。你知道我如何用任何编程语言(c、c++、JAVA、php)实现这样的事情吗?
加密只能在之前将纯数据发送到磁盘而不是之后。
欢迎提出任何想法。谢谢
【问题讨论】:
标签:
encryption
windows-7
intercept
【解决方案1】:
一般来说,这几乎是不可能的。许多程序使用内存映射文件写入磁盘。在这种方案中,内存范围被映射到文件的(部分)。在这样的方案中,无法将写入文件与写入内存区分开来。像p[OFFSET_OF_FIELD_X] = 17; 这样的语句在逻辑上是对文件的写入。此外,操作系统将跟踪内存和磁盘的同步。并非所有对内存的逻辑写入都直接转换为对磁盘的物理写入。有时,操作系统会随心所欲地将脏内存页复制回磁盘。
即使在CreateFile/WriteFile 这种更简单的情况下,也几乎没有空间可以即时截取数据。您可以实现的最接近的是使用 Microsoft Detours。我知道至少有一个蛇油加密程序(WxVault,戴尔上的垃圾软件)可以做到这一点。它在现场反复使我的应用程序崩溃,这就是为什么我的程序不修补任何即时拦截数据的尝试。因此,即使是这样的 hack 也无法抵御不喜欢干扰的程序。