我有一个应用程序调用另一个控制台应用程序并传递给它一些参数(控制台应用程序是一个视频/音频转换器应用程序)...有没有办法以编程方式“间谍”或捕获传递的参数除了挂钩/监控shellexecute / CreateThread等?
答案 0 :(得分:4)
自己创建一个可执行文件,只调用原始文件并将所有参数传递给它。然后将原件移到其他地方并用你的exe替换它。然后,您的程序可以记录对它的所有调用,包括所有参数。
答案 1 :(得分:2)
是的,有 - 当您编写Process Explorer能够执行此操作时,您可以使用相同的技术。但是AFAIK没有来自Platform SDK的 winternl.h 文件的Delphi翻译,所以它更加繁琐和困难。此外,这是特定于版本的版本,并且有可能会破坏下一个Windows版本。它是否适用于64位进程(来自32位进程)也不太清楚。
如果你真的想这样做,你会在this blog posting by Matt Pietrek和CodeProject文章“Read Environment Strings of Remote process”中找到必要的信息。
如果您不打算将其用于闭源商业程序,那么查看ReactOS项目中的(GPL许可)annotated version of the winternl.h文件可能也会有所帮助。
答案 2 :(得分:0)
这是自1992年以来的Win32常见问题解答:只需阅读PEB 请参阅Win32 experts group。