如何使一个程序在c中运行时修改自己

06odsfpq  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(164)

我有一个简单的程序,关闭计算机,但它总是被检测到病毒时,我分享的exe文件,所以我想知道我是否可以使程序对待的一部分代码像一个评论,直到它运行。例如在运行之前

#include <stdio.h>
#include <stdlib.h>

int main()
{
    if(programme is running)
    {remove /* on line 8;}
    /*system("C:\\WINDOWS\\System32\\shutdown /s");*/
    return 0;
}

我试着把它保存在zip中,但它仍然被检测为病毒。这就是为什么我正在寻找一种方法,使它自我修改,使它可以绕过windows安全

dxxyhpgq

dxxyhpgq1#

你所要求的是不可能做到的。在编译过程中,所有注解都被忽略,所以编译后的二进制代码将没有注解的痕迹。
在C语言的规范中,不可能改变可执行代码,只能修改数据。
因此,除非你将执行low-level tricks(可能过时),否则你只能修改程序数据。
例如,您可以将系统命令字符串"C:\\WINDOWS\\System32\\shutdown /s"存储在“加密”字符串中:

char command[] = "D;]XJOEPXT]Tztufn43]tivuepxo!0t";

然后让代码在运行它之前将其修改为真实的命令。在这种情况下:

for(unsigned i = 0; i < sizeof(command)-1; i++) command[i] = command[i] - 1;
   system(command);

然而,正如其他人评论的那样,这不太可能对您将程序视为威胁的根本问题产生影响。
我猜想,制作一个真正的自我修改程序会使操作系统或反恶意软件监控将程序视为威胁的可能性更大,而不是更小。

相关问题