Logic 病毒逻辑-伪/PoC

Logic 病毒逻辑-伪/PoC,logic,pseudocode,Logic,Pseudocode,我正设法解决这个问题。希望有人能帮忙 想象一下,我们有一个叫做混乱的程序 显然这是伪代码,所以不会运行 对于任何程序p,我们都可以运行Virus FinderP。如果是病毒,则结果为真;如果不是,则结果为假 感染可执行文件是一个模块,它扫描内存中的可执行程序,并在这些可执行文件中复制程序混乱 对于病毒查找器的实际功能,我们没有任何指导,只是如果输入是病毒,它将返回True;如果输入不是病毒,它将返回False 是否有可能确定病毒查找器是否能正确判断混淆是否为病毒?我最初的想法是不行。但是我不能理

我正设法解决这个问题。希望有人能帮忙

想象一下,我们有一个叫做混乱的程序

显然这是伪代码,所以不会运行

对于任何程序p,我们都可以运行Virus FinderP。如果是病毒,则结果为真;如果不是,则结果为假

感染可执行文件是一个模块,它扫描内存中的可执行程序,并在这些可执行文件中复制程序混乱

对于病毒查找器的实际功能,我们没有任何指导,只是如果输入是病毒,它将返回True;如果输入不是病毒,它将返回False


是否有可能确定病毒查找器是否能正确判断混淆是否为病毒?我最初的想法是不行。但是我不能理解逻辑。

你说的不是很明确,但假设如下: 如果p执行“感染可执行文件”,则Virus finderp返回true

在这种情况下,很容易证明Virus finderp是不可判定的,而您的伪代码恰恰做到了这一点: 假设病毒finderp是可判定的,所以它总是返回true resp。如果p执行resp,则为false。不执行感染可执行文件。然后,您的伪代码显示病毒查找器无法确定它是否是病毒


正如Barmar提到的,这种推理通常是证明某个问题不可判定性的一种方式,特别是停止问题,另一个众所周知的方法是将其简化为另一个不可判定的问题。

我怀疑任何试图静态确定某个非平凡程序所做的事情的算法实际上等同于停止问题。
Program confusion
if(Virus-Finder(Confusion) = false) then
   infect-executable
else
   halt
End program confusion