繁体   English   中英

查看传递给程序的命令行参数

[英]See command line arguments being passed to a program

你可以跳过这部分

我正在使用我的拇指驱动器中的批处理文件来安装真正的 crypt 卷。 我在此链接的帮助下创建了该批处理文件。 在该批处理文件中,我将用户名和密码作为参数传递给 trueCrypt.exe,以便安装它。


无论如何,我的问题是:是否有可能看到从第三方进程传递给程序的参数? 换句话说,是否可以看到传递给该程序的参数:

using System;
using System.Reflection;
using System.Diagnostics;

class Program
{
    static string password = "";

    static void Main(string[] args)
    {
        if (args.Length > 0)
            password = args[0];

        // get location where this program resides 
        var locationOfThisExe = Assembly.GetExecutingAssembly().Location;


        Console.Write("Press enter to start a new instance of this program.");
        Console.Read();

        var randomArgument = new Random().NextDouble().ToString();
        Process.Start(locationOfThisExe, randomArgument); 
        // I am passing a random argument to a new process!
        // is it possible to see these arguments from another process?
    }
}

编辑

我正在创建一个编辑,因为我认为我错误地解释了我自己,但这个编辑应该是一个解决方案而不是一个问题

我认为这个问题没有得到足够的重视。 执行https://stackoverflow.com/users/235660/alois-kraus显示的命令显示:

(我在记事本++上粘贴了输出)

在此处输入图片说明

在图像上它没有显示得很清楚,但我能够看到传递给该过程的参数。 这对我来说很重要,因为我使用以下命令安装了真正的 crypt 卷:

"C:\\Program Files\\TrueCrypt\\TrueCrypt.exe" /v "a:\\volume.tc" /lz /a /pa

它告诉给TrueCrypt的,我想挂载位于体积a:\\volume.tc驱动器字母Z,密码是a

如果我执行该命令 true crypt 将在驱动器 z 上安装该卷:

在此处输入图片说明

问题是,如果我然后执行命令wmic process注意什么鞋子:

在此处输入图片说明

注意密码在里面!

所以总而言之,将安全信息作为参数传递是不安全的。 如果您关闭接收参数的进程可能是安全的,但我认为意识到这一点很重要......

如果其他具有管理权限或具有相同用户帐户的用户可以执行程序,您可以看到所有命令行

wmic process

从所有进程使用这个单一的命令行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM