我试图下载已签名的可执行文件 (http://live.sysinternals.com/procexp.exe) 并修改它。我认为它无法完成,Windows会以某种方式阻止我运行它(或者至少警告我)。但是当我更改单个字符(例如在DOS存根或任何其他文本数据中)时,它仍然可以运行。
在修改之前,当我运行此应用程序时,它会溅出UAC警告,显示它已签署Microsoft并询问我是否要运行它。修改后,没有这样的事情。即使我还原了更改,它仍然不会出现。我将修改后的和恢复的可执行文件与原始版本(总指挥官)进行了比较,但没有显示出任何区别。但是原版仍然在飞溅UAC。
为什么?
我正在使用Windows 7和Firefox。
答案 0 :(得分:1)
我从未尝试过这样做。然而,当您编辑文件时,您使数字签名无效,您应该在文件的属性中看到它。
Windows通常不会检查数字签名。当文件被标记为从Internet下载时(如果签名有效,Windows将在确认对话框中显示其发布者;否则,发布者将是未知的)和UAC(在这种情况下,数字),数字签名将发挥作用签名还确认该文件来自作为数字签名的一部分存储的发布者。)
是否显示UAC确认不受数字签名控制,它由应用程序清单控制。
所以在我的理解中,应该显示UAC对话框。但由于修改后的文件无法进行数字签名检查,因此Windows可能会认定该文件不安全。您可以在Windows事件日志中查找消息,可能会有事件解释您看到的行为。
答案 1 :(得分:0)
我已将chrome.exe复制到其他目录中,并开始在应用程序中写入随机字节。
我检查了属性,数字签名就在那里。我已经改变了申请。它无法执行(给出内部错误之王而不是Windows错误)但仍然在属性中显示有效证书。很奇怪。
我认为Windows只会验证一次应用程序的证书。
答案 2 :(得分:0)
更改文件后,它仍会显示数字签名,但如果您单击该签名的“详细信息”按钮,我认为您会发现签名无效。 当我把它改回原来它所包含的内容时,它再一次告诉我签名是有效的。 (但是你必须使用一个编辑器来编辑那些字节 - 而不是一个可能会无意间添加换行符的东西。)