2

我有一个应用程序,它调用另一个控制台应用程序并向它传递一些参数(控制台应用程序是一个视频/音频转换应用程序).​​.....有没有办法以编程方式“间谍”或捕获传递的参数,而不是挂钩/监控 shellexecute/创建线程等?

4

3 回答 3

4

自己创建一个可执行文件,它只调用原始文件并将所有参数传递给它。然后将原件移到其他地方并用您的exe替换它。然后,您的程序可以记录对其的所有调用,包括所有参数。

于 2009-05-01T08:03:47.687 回答
2

是的,有——当您编写 Process Explorer 时,它能够做到这一点,并且您可以使用相同的技术。但是 AFAIK 没有来自 Platform SDK 的winternl.h文件的 Delphi 翻译,因此更加繁琐和困难。这也是非常特定于版本的,并且有可能会在下一个 Windows 版本中中断。这是否适用于 64 位进程(来自 32 位进程)也不是很清楚。

如果您真的想这样做,您将在Matt Pietrek 的这篇博客文章和 CodeProject 文章“读取远程进程的环境字符串”中找到必要的信息。

如果您不打算将它用于封闭源代码的商业程序,那么查看 ReactOS 项目中带有注释的(GPL 许可的)winternl.h文件版本可能也会有所帮助。

于 2009-05-01T13:50:24.093 回答
0

这是自 1992 年以来的 Win32 常见问题解答:只需阅读 PEB。
参见Win32 专家组

于 2009-05-03T09:01:25.147 回答